在mysql中查找最频繁的值,如果出现平局,则显示所有值
例如,我们有在mysql中查找最频繁的值,如果出现平局,则显示所有值,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,例如,我们有1,2和3是同时出现频率最高的值,在平局时如何返回它们 id 1 1 1 2 2 2 3 3 3 4 你可以试试: SELECT id FROM yourTable GROUP BY id HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1); 在MySQL 8+的最新版本上,我们可以在这里使用RANK: WI
1
,2
和3
是同时出现频率最高的值,在平局时如何返回它们
id
1
1
1
2
2
2
3
3
3
4
你可以试试:
SELECT id
FROM yourTable
GROUP BY id
HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable
GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1);
在MySQL 8+的最新版本上,我们可以在这里使用RANK
:
WITH cte AS (
SELECT id, RANK() OVER (ORDER BY COUNT(*) DESC) rnk
FROM yourTable
GROUP BY id
)
SELECT id
FROM cte
WHERE rnk = 1;
你可以试试:
SELECT id
FROM yourTable
GROUP BY id
HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable
GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1);
在MySQL 8+的最新版本上,我们可以在这里使用RANK
:
WITH cte AS (
SELECT id, RANK() OVER (ORDER BY COUNT(*) DESC) rnk
FROM yourTable
GROUP BY id
)
SELECT id
FROM cte
WHERE rnk = 1;
在发布到此处之前,您是否自己尝试过解决此问题?我尝试过max(count()),但此处似乎有语法错误。在发布到此处之前,您是否自己尝试过解决此问题?我尝试过max(count()),但此处似乎有语法错误。