我有一个表'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/

10-12 07:24