Выборка уникальных значений и их сумма - MySQL

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, имеется таблица, в котором содержится список городов: Москва, Москва, Нижний Новгород, Саров, Арзамас, Нижний Новгород и т.д. Необходимо получить количество городов, то есть в данном случае нужно получить { Москва => 2, Нижний Новгород => 2, Саров => 1, Арзамас => 1 } Можно ли вывести это одним запросом?

Решение задачи: «Выборка уникальных значений и их сумма»

textual
Листинг программы
SELECT city_name, COUNT(*)
FROM (
SELECT translate(UPPER(regexp_replace(city_name,'\s+')),'АВСЕНКМОРТХУ','ABCEHKMOPTXY' ) city_name
FROM MyTable
) GROUP BY  city_name

Объяснение кода листинга программы

В этом коде:

  1. translate(UPPER(regexp_replace(city_name,'\s+')),'АВСЕНКМОРТХУ','ABCEHKMOPTXY') - это функция, которая выполняет несколько операций над столбцом city_name из таблицы MyTable. Сначала с помощью функции UPPER все символы в столбце преобразуются в верхний регистр. Затем с помощью функции regexp_replace все пробелы в столбце заменяются на символ *. Наконец, с помощью функции translate все символы в первой группе (АВСЕНКМОРТХУ) заменяются на соответствующие символы во второй группе (ABCEHKMOPTXY). Таким образом, в результате этой функции получается новая колонка city_name, в которой все названия городов приведены к определенному формату.
  2. SELECT city_name, COUNT(*) - это основная часть запроса. Здесь мы выбираем два столбца из подзапроса: city_name и COUNT(*). COUNT(*) считает количество записей в каждой группе, то есть количество уникальных значений в столбце city_name, которые были получены после применения функции из предыдущего шага.
  3. FROM MyTable - это указание, откуда нужно брать данные для выполнения запроса. В данном случае мы берем данные из таблицы MyTable.
  4. GROUP BY city_name - это указание, какие столбцы должны быть в итоговом результате запроса. В данном случае мы группируем данные по столбцу city_name. Таким образом, этот запрос выбирает уникальные значения в столбце city_name из таблицы MyTable и подсчитывает их количество. При этом применяется функция для преобразования названий городов в определенный формат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы