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