Подтвердить что ты не робот

Сортировать по COUNT за значение

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

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

Таблица

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

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

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS
4b9b3361

Ответ 1

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;

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

Ответ 2

Этот вычисляет счет в отдельном запросе, присоединяет его и заказывает по этому счету (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;

Ответ 3

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

 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

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

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

Ответ 4

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