SQL return 最小按groupby和比率

SQL return minimum by groupby and ratio of

一个 SQL 问题:我有一个 table gameuser_id(每个用户唯一),game_id(每个游戏唯一), game_start_timestamp_utc(游戏开始时的 UTC 时间戳)和 game_status,可以是“通过”、“进行中”或“失败”。

题目是写查询return通过率最低的游戏(通过users/enrolled个用户)。

table应该是这样的

user_id game_id game_start_timestamp_utc game_status
-----------------------------------------------------
1          111      10/22/2019            pass
2          111      10/21/2018            fail
...

我在Pythonpandas知道怎么做,只需要group by game_id计算通过率,但在SQL没太多想法。提前致谢。

使用条件聚合。 avg() 派上用场:

select game_id, 
    avg(case when game_status = 'pass' then 1.0 else 0 end) as pass_rate
from game
group by game_id
order by pass_rate

这会为您提供每场比赛的通过率,作为 0 到 1 之间的值,按增加率排序 - 因此第一行是您想要的结果。

您只能使用 row-limiting 子句保留这一行。语法因数据库而异:limit 1top (1)fetch first row、...