Как выбрать уникальные значения из столбца в SQL?

Ответ

В 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 — это «сгруппируй по чему-то и дай мне сводку по каждой группе». Как начальник цеха, который не только работников по именам различает, но и выработку по каждому считает.