我有一个表'Country'(该表作为SQLWorkbench的演示版提供),其属性为:'name'和'IndepYear'。
我想寻找更多国家独立的一年,我对他们的名字不感兴趣。
该查询有效。
SELECT Nest.IndepYear, Nest.conta
FROM (Select IndepYear,count(IndepYear) AS conta
FROM country GROUP BY IndepYear) Nest
WHERE Nest.conta = (Select max(conta) FROM (SELECT IndepYear,count(IndepYear) AS conta
FROM country GROUP BY IndepYear)Nest2)
输出量
IndepYear Conta
1960 18
1991 18
有没有更聪明,更易读或更有效的方式来做到这一点?
编辑:感谢到目前为止的答案,但我只想获得最好的结果感兴趣。我的意思是只获取所有前n行和仅这些行。
最佳答案
这远非完美,但可能会给您一些有关如何改进查询的想法:
select IndepYear, count(*)
from country
group by IndepYear
having count(*) = (
select count(*) from country group by IndepYear order by count(*) desc limit 1
)
关于mysql - 基本SQL。有没有更好的方法来使用聚合函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19731732/