Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Сортировка таблицы по количеству магазинов в городах SQL

Быстрый ответ

Для сортировки значений по их частоте встречаемости воспользуйтесь агрегатной функцией COUNT и оператором GROUP BY:

SQL
Скопировать код
SELECT имя_вашего_столбца, COUNT(*) AS количество
FROM имя_вашей_таблицы
GROUP BY имя_вашего_столбца
ORDER BY количество DESC;

Для вывода полного списка сохранив при этом порядок сортировки используйте внутреннее соединение с подзапросом:

SQL
Скопировать код
SELECT a.*, b.количество
FROM имя_вашей_таблицы a
JOIN (
    SELECT имя_вашего_столбца, COUNT(*) AS количество
    FROM имя_вашей_таблицы
    GROUP BY имя_вашего_столбца
) b ON a.имя_вашего_столбца = b.имя_вашего_столбца
ORDER BY b.количество DESC;

Замените имя_вашего_столбца и имя_вашей_таблицы на действительные имена столбцов и таблиц.

Кинга Идем в IT: пошаговый план для смены профессии

Навигация под рукой

Следуйте этим простым советам для улучшения обработки данных:

1. Фильтрация редких записей

Для исключения sporadic-встречаемости используйте HAVING:

SQL
Скопировать код
SELECT имя_вашего_столбца, COUNT(*) AS количество
FROM имя_вашей_таблицы
GROUP BY имя_вашего_столбца
HAVING COUNT(имя_вашего_столбца) > X
ORDER BY количество DESC;

X – это минимальное число вхождений для учета при отборе.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

2. Внедрение постраничной навигации

Чтобы разделить большие объемы данных на небольшие страницы для удобства просмотра, используйте LIMIT и OFFSET:

SQL
Скопировать код
SELECT имя_вашего_столбца, COUNT(*) AS количество
FROM имя_вашей_таблицы
GROUP BY имя_вашего_столбца
ORDER BY количество DESC
LIMIT Y OFFSET Z;

Y – число результатов на страницу, Z – смещение начала вывода данных.

Визуализация

Представьте результат в виде таблицы, где каждая строка – это отдельная позиция на пьедестале данных:

Markdown
Скопировать код
Позиция | Значение в данных | Количество вхождений (COUNT)
--------|-------------------|-----------------------------
🥇 Первое | A                 | ***** (5)
🥈 Второе | B                 | *** (3)
🥉 Третье | C                 | ** (2)
          | D                 | * (1)

Значения A, B, C и D в данных это как спортсмены, участвующие в марафоне – они упорядочены по достижениям, т.е., чем больше вхождений, тем выше позиция.

Глубже в COUNT()

3. Условный подсчет

Используйте CASE для более интересного подсчета данных, разделите их на группы по определенными критериями:

SQL
Скопировать код
SELECT имя_вашего_столбца,
       SUM(CASE WHEN условие_1 THEN 1 ELSE 0 END) AS количество_1,
       SUM(CASE WHEN условие_2 THEN 1 ELSE 0 END) AS количество_2
FROM имя_вашей_таблицы
GROUP BY имя_вашего_столбца
ORDER BY количество_1 DESC, количество_2 DESC;

4. Дополнительные данные

Добавьте информацию из других таблиц в подсчет данных, используя JOIN:

SQL
Скопировать код
SELECT c.*, t.количество
FROM категории c
JOIN (
    SELECT category_id, COUNT(*) AS количество
    FROM продукты
    GROUP BY category_id
) t ON c.id = t.category_id
ORDER BY t.количество DESC;

5. Фокус на времени

Анализ временных рядов удобно проводить, группируя данные по датам при помощи функций обработки времени:

SQL
Скопировать код
SELECT DATE_FORMAT(ваш_столбец_с_датой, '%Y-%m') AS год_месяц, COUNT(*) AS количество
FROM имя_вашей_таблицы
GROUP BY год_месяц
ORDER BY год_месяц DESC;

6. Использование представлений

Оберните логику запросов в ПРЕДСТАВЛЕНИЕ для наглядного анализа:

SQL
Скопировать код
CREATE VIEW имя_представления AS
SELECT имя_вашего_столбца, COUNT(*) AS количество
FROM имя_вашей_таблицы
GROUP BY имя_вашего_столбца;

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

Полезные материалы

  1. SQL GROUP BY Statement – основы группировки данных в SQL.
  2. Simulating MySQL's ORDER BY FIELD() in Postgresql – обсуждение пользовательской сортировки списков в SQL на Stack Overflow.
  3. SQL Server CTE Basics – руководство по использованию CTE для сложных SQL-запросов.
  4. SQL Aggregate Functions | Intermediate SQL – Mode – детальное описание агрегатных функций, включая COUNT.
  5. SQL Best Practices – советы по эффективному написанию SQL-запросов.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой SQL-запрос требуется для сортировки значений по количеству вхождений?
1 / 5