SQL count or max (sqlite)



表是这样的:

ratio|user
0.1|2
0.3|2
1  |2
1  |2
0.4|3
0.7|3

查询应该为每个用户返回比率为1的次数,或者,如果该用户没有比率为1,则返回最高比率。对于上面的表,查询应该返回:

2|2
3|0.7

因为有两个"1"用户2的比率值,用户3的最高比率为0.7。

我现在拥有的是select user,count(ratio) from table where ratio = 1 group by user;,但显然它在要求的第二部分失败了。我应该做一个子表已经与第一个查询的结果填充…?

使用CASE表达式在计数和最大值之间进行选择:

SELECT user, CASE WHEN SUM(ratio = 1) > 0
THEN SUM(ratio = 1) ELSE MAX(ratio) END AS ratio
FROM yourTable
GROUP BY user;

我认为这可以通过两步来完成:

select user,count(ratio) as column2 from table where ratio = 1 group by user
union 
select user,max(ratio) as column2 from table where ratio <> 1 group by user

相关内容

  • 没有找到相关文章

最新更新