按COUNT计算每个值
我有一个表,存储的ID和商店所在的城市。
我想列出所有以商店最多的商店开始的商店。
表
ID CITY 1 NYC 2 BOS 3 BOS 4 NYC 5 NYC
我想要的产品是以下,因为我在纽约市的商店最多,我希望所有的纽约市的位置都列在第一位。
1 NYC 4 NYC 5 NYC 2 BOS 3 BOS
SELECT count(City), City FROM table GROUP BY City ORDER BY count(City);
要么
SELECT count(City) as count, City FROM table GROUP BY City ORDER BY count;
啊,对不起,我错误地解释了你的问题。 我相信Peter Langs的回答是正确的。
这个计算在一个单独的查询计数,join它,并通过该计数( SQL的小提琴 )订单:
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;
这个解决scheme并不是一个非常优秀的解决scheme,所以如果你的表格非常大,执行需要一些时间,但是它确实符合你的要求。
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
也就是说,对于你遇到的每个城市,你都会统计该城市在数据库中出现的次数。
免责声明:这给你所要求的,但我不会推荐它的行数将变得太大的生产环境。
SELECT `FirstAddressLine4`, count(*) AS `Count` FROM `leads` WHERE `Status`='Yes' AND `broker_id`='0' GROUPBY `FirstAddressLine4` ORDERBY `Count` DESC LIMIT 0, 8