Ответ
В SQL для выборки уникальных значений из столбца используются операторы DISTINCT или GROUP BY.
1. Использование DISTINCT
Оператор DISTINCT удаляет дубликаты из результирующего набора.
-- Выбрать все уникальные города из таблицы users
SELECT DISTINCT city FROM users;
-- Выбрать уникальные пары (город, страна)
SELECT DISTINCT city, country FROM users;
2. Использование GROUP BY
GROUP BY группирует строки по указанным столбцам, что также приводит к уникальности. Этот подход полезен, когда нужны агрегированные данные.
-- Получить уникальные города и количество пользователей в каждом
SELECT city, COUNT(*) as user_count
FROM users
GROUP BY city;
3. Подсчет количества уникальных значений
Для этого часто используется комбинация COUNT и DISTINCT.
-- Узнать, сколько уникальных городов есть в таблице
SELECT COUNT(DISTINCT city) as unique_cities_count FROM users;
Ключевое отличие:
DISTINCTприменяется для выборки уникальных строк.GROUP BYпредназначен для агрегации данных (сCOUNT,SUM,AVG), но также обеспечивает уникальность группирующих столбцов.
Ответ 18+ 🔞
Да ты посмотри, какие у нас тут, блядь, инструменты для выковыривания уникального дерьма из столбов! Прямо как в жизни — можно просто отсеять повторы, а можно сгруппировать и посчитать, сколько этой хуйни набралось.
1. Волшебный DISTINCT — отсеиватель дублей
Этот оператор работает проще пареной репы. Сказал ему — «дай всё, но без повторов», и он, сука, как швейцарский фильтр, оставляет только по одному экземпляру.
-- Вытащить все города из users, но чтобы каждый город был в единственном, блядь, экземпляре
SELECT DISTINCT city FROM users;
-- А тут уже уникальность проверяется по паре «город-страна». Охуенно!
SELECT DISTINCT city, country FROM users;
2. Могучий GROUP BY — не просто уникальность, а с агрегацией!
А вот это уже посерьёзнее. Он не просто убирает дубли, а, блядь, сваливает одинаковые строки в кучки и позволяет над этими кучками колдовать.
-- Получаем уникальные города и заодно, ёпта, считаем, сколько в каждом юзеров набилось
SELECT city, COUNT(*) as user_count
FROM users
GROUP BY city;
То есть GROUP BY — это как DISTINCT на стероидах, который ещё и умеет считать, суммировать и выносить мозг агрегатными функциями.
3. А если надо просто посчитать, сколько там всего уникального?
Тут, блядь, классика жанра — скрещиваем COUNT и DISTINCT.
-- Узнаём, сколько вообще разных городов засветилось в таблице. Овердохуища или три штуки — сразу видно.
SELECT COUNT(DISTINCT city) as unique_cities_count FROM users;
Суть отличия, чтоб не ебать мозг:
DISTINCT— это просто «оставь уникальное, нахуй всё лишнее». Как сито.GROUP BY— это «сгруппируй по чему-то и дай мне сводку по каждой группе». Как начальник цеха, который не только работников по именам различает, но и выработку по каждому считает.