每个值按COUNT排序

时间:2010-02-17 18:19:42

标签: mysql sql count sql-order-by

我有一个存储ID和商店所在城市的表格。

我想列出从商店最多的商店开始的所有商店。

ID CITY
1  NYC
2  BOS
3  BOS
4  NYC
5  NYC

我想要的输出如下,因为我在纽约市拥有最多的商店,我希望首先列出所有纽约市的位置。

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS

4 个答案:

答案 0 :(得分:58)

SELECT count(City), City
FROM table
GROUP BY City
ORDER BY count(City);

OR

SELECT count(City) as count, City
FROM table
GROUP BY City
ORDER BY count;

啊,对不起,我误解了你的问题。我相信Peter Langs的回答是正确的。

答案 1 :(得分:28)

这个计算单独查询中的计数,加入它和按该计数排序的订单(SQL-Fiddle):

SELECT c.id, c.city
FROM cities c
JOIN ( SELECT city, COUNT(*) AS cnt
       FROM cities
       GROUP BY city
     ) c2 ON ( c2.city = c.city )
ORDER BY c2.cnt DESC;

答案 2 :(得分:6)

这个解决方案并不是一个非常理想的解决方案,所以如果你的表非常大,那么执行它需要一些时间,但它可以满足你的要求。

 select c.city, c.id, 
      (select count(*) as cnt from city c2 
       where c2.city = c.city) as order_col
 from city c
 order by order_col desc

也就是说,对于您遇到的每个城市,您都在计算该城市在数据库中出现的次数。

免责声明:这可以满足您的要求,但我不建议将其用于行数过大的生产环境。

答案 3 :(得分:0)

SELECT `FirstAddressLine4`, count(*) AS `Count` 
FROM `leads` 
WHERE `Status`='Yes'
AND `broker_id`='0'
GROUPBY `FirstAddressLine4` 
ORDERBY `Count` DESC 
LIMIT 0, 8