sql查询返回前10位国家的数量

时间:2013-06-15 14:24:07

标签: mysql sql

我有一个MySQL表,其中包含' id '和' country '列表(还有其他内容,但相关)。

在此表中,我有很多递增ID和许多不同的国家/地区名称,例如“英国”,“匈牙利”和& '美国'。

我正在为查询提供一些帮助,这些查询将返回前10个国家/地区并按顺序计算它们(如果可能的话会降序)

例如,如果'匈牙利'出现100次,'美国'出现50次,'英国'出现25次,那么会回来:

'Hungary', 100
'United States', 50
'United Kingdom', 25

这有意义吗?

非常感谢,

马特

5 个答案:

答案 0 :(得分:4)

我认为你正在寻找这样的东西:

SELECT country, COUNT(*)
FROM YourTable
Group By country
Order By COUNT(*) DESC
LIMIT 10

答案 1 :(得分:1)

您可以尝试此查询:

SELECT country_column as country, count(country_column) as c FROM COUNTRIES_TABLE group by country order by c desc limit 10;

然后你可以使用LIMIT子句

答案 2 :(得分:0)

这将有效:

SELECT country_column as country, count(country_column) as c 
FROM COUNTRIES_TABLE 
GROUP BY country 
ORDER BY c DESC
limit 10;

答案 3 :(得分:0)

轻微更新Abubakkar的答案(忽略任何带有NULL国家/地区名称的记录) - 如果您还想计算空值,请按如下方式更新您的count语句:

SELECT Country, count(*) as countval
FROM COUNTRIES_TABLE 
Group By Country
Order By countval DESC
LIMIT 10;

如果表中有34个空值,则响应类似于:

'Hungary', 100
'United States', 50
NULL, 34
'United Kingdom', 25

在这种情况下,我没有找到计数(*)非常直观的语法,但它确实有效。

答案 4 :(得分:-1)

Select top 10 Country, itemCount
From (Select country, count(*) itemCount
      From table
      Group By country) z
Order By itemCount desc