Упорядочить по COUNT на значение

У меня есть таблица, в которой хранятся идентификаторы и город, в котором находится магазин.

Я хочу перечислить все магазины, начиная с магазинов, которые находятся в городе, где больше всего магазинов.

СТОЛ

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

Результат, который я хочу, следующий, поскольку у меня больше всего магазинов в Нью-Йорке, я хочу, чтобы все местоположения в Нью-Йорке были указаны первыми.

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS

person Enkay    schedule 17.02.2010    source источник
comment
Точный ответ =1&lq=1" title="mysql порядок по количеству вхождений элемента в столбце таблицы mysql"> stackoverflow.com/questions/26187033/   -  person A. Sang    schedule 11.01.2018


Ответы (3)


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;

Ааа, извините, я неправильно истолковал ваш вопрос. Я считаю, что ответ Питера Ланга был правильным.

person MindStalker    schedule 17.02.2010
comment
Возможно, я делаю это неправильно, но когда я использую группу вместо перечисления каждого отдельного магазина, он будет отображать только 1 магазин для Нью-Йорка и 1 магазин для BOS. Любая идея, что может пойти не так? - person Enkay; 17.02.2010
comment
Enkay: Это именно то, что делает group by. Он объединяет идентичные записи. - person EmFi; 17.02.2010
comment
Да, но мои магазины не идентичны, у меня есть 3 разных магазина в Нью-Йорке с уникальным идентификатором магазина. Мне нужно перечислить каждый отдельный магазин. Я просто хочу, чтобы их заказал город с наибольшим количеством магазинов. - person Enkay; 17.02.2010
comment
Если вы добавите идентификатор в «GROUP BY», он отобразит все строки. - person giladbu; 17.02.2010


Это решение не очень оптимальное, поэтому, если ваша таблица очень большая, ее выполнение займет некоторое время, но оно делает то, что вы просите.

 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

То есть для каждого города, с которым вы сталкиваетесь, вы подсчитываете, сколько раз этот город встречается в базе данных.

Отказ от ответственности: это дает то, о чем вы просите, но я бы не рекомендовал его для производственных сред, где количество строк будет слишком большим.

person Vincent Ramdhanie    schedule 17.02.2010