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

«Как получить список уникальных значений из столбца таблицы в SQL?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В SQL для этого используются операторы DISTINCT или GROUP BY.

Использование DISTINCT

Оператор DISTINCT убирает дубликаты из результирующего набора.

-- Уникальные значения одного столбца
SELECT DISTINCT department FROM employees;

-- Уникальные комбинации нескольких столбцов
SELECT DISTINCT department, job_title FROM employees;

Использование GROUP BY

GROUP BY также возвращает уникальные значения, но его основная цель — агрегация. Для простого получения уникальных значений он избыточен, но корректен.

SELECT department FROM employees GROUP BY department;

Ключевые отличия:

  • DISTINCT применяется ко всем полям в SELECT и удаляет дубликаты строк.
  • GROUP BY группирует строки по указанным столбцам и позволяет использовать агрегатные функции (COUNT, SUM, AVG).

Пример с агрегацией (где GROUP BY необходим):

-- Получить количество сотрудников в каждом уникальном отделе
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;

В Python (с использованием pandas):

import pandas as pd
import sqlite3

conn = sqlite3.connect('database.db')
# Через SQL запрос
unique_sql = pd.read_sql_query('SELECT DISTINCT department FROM employees', conn)
# Или через метод pandas
df = pd.read_sql('SELECT * FROM employees', conn)
unique_pandas = df['department'].unique().tolist()