Сортировать по COUNT за значение
У меня есть таблица, в которой хранятся идентификаторы и город, в котором находится магазин.
Я хочу перечислить все магазины, начиная с магазинов, которые находятся в городе, где есть большинство магазинов.
Таблица
ID CITY
1 NYC
2 BOS
3 BOS
4 NYC
5 NYC
Выход, который я хочу, следующий, поскольку у меня есть большинство магазинов в Нью-Йорке, я хочу, чтобы все местоположение NYC было указано первым.
1 NYC
4 NYC
5 NYC
2 BOS
3 BOS
Ответы
Ответ 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