我有一个查询,其中有一个分组依据的计数,我想获得更大的计数。我可以按限制为1的顺序进行处理,但是我有多个具有相同计数的结果,因此对我不起作用。
我该如何解决这个问题?
答案 0 :(得分:1)
如果您不打算使用窗口功能来执行此操作,则可以执行以下操作:
SELECT group_id, COUNT(*) as cnt
FROM table_name
GROUP BY group_id
HAVING cnt = (SELECT COUNT(*)
FROM table_name
GROUP BY group_id
ORDER BY COUNT(*) DESC
LIMIT 1
) ;
答案 1 :(得分:0)
使用MySql 8+,您可以使用CTE获取最大计数,然后检索计数等于最大计数的所有记录。
但是,由于CTE在MySql 5.6中不可用,因此您需要使用子查询来获取最大计数,然后编写主查询,该查询将每个记录的计数与从记录中检索到的最大计数进行比较。子查询。
这是我写的查询。也许这不是最有效的解决方案,但可以达到预期的效果。
SELECT
group_id, COUNT(record_id) c
FROM
table_name
GROUP BY group_id
HAVING c IN (
SELECT
MAX(sub_query.c)
FROM
(SELECT
group_id, COUNT(record_id) c
FROM
table_name
GROUP BY group_id) AS sub_query
)