我无法将其写成清晰的标题,所以首先让我澄清一下。
我有一个包含多个列的表,但只有两个相关列。
ID || type
-------------
1 || 5
1 || 7
2 || 6
2 || 7
2 || 7
2 || 7
3 || 5
我想要的是任何给定ID的类型7的MAX出现次数(不是我自己输入的ID,只是任何ID)
例如,上面的示例表的结果将是3(对于相同的id,3个类型7)。
有没有简单的方法可以做到这一点?我有一些想法,但所有想法都非常复杂且不必要很长,比如对每个ID进行单独查询并比较结果。
另外,如果这是一个重复的问题,我很抱歉,但我根本无法充分说出我的问题以找到相关信息。
答案 0 :(得分:4)
最简单的方法是子查询:
select max(cnt)
from (select id, count(*) as cnt
from table t
where type = 7
group by id
) t;
但是没有子查询有一种聪明的方法:
select count(*)
from table t
where type = 7
group by id
order by count(*) desc
limit 1;