Ответ
В SQL есть два основных подхода:
1. Ключевое слово DISTINCT
Удаляет дубликаты из результирующего набора по всем выбранным столбцам.
-- Уникальные значения из одного столбца
SELECT DISTINCT department FROM employees;
-- Уникальные комбинации из нескольких столбцов
SELECT DISTINCT first_name, last_name FROM users;
2. Агрегация с GROUP BY
Позволяет не только удалить дубликаты, но и выполнить вычисления над группами.
-- Уникальные имена с подсчетом количества повторений
SELECT first_name, COUNT(*) as count
FROM users
GROUP BY first_name;
Важные различия:
DISTINCTприменяется ко всему набору результатов после выборки.GROUP BYгруппирует строки перед применением агрегатных функций (COUNT, SUM, AVG).- Для производительности на больших таблицах с
GROUP BYчасто нужны индексы по группируемым полям.
В коде (Python):
# Использование set (порядок не сохраняется)
data = [1, 2, 2, 3, 1]
unique_data = list(set(data)) # [1, 2, 3]
# Сохранение порядка появления (Python 3.7+)
from collections import OrderedDict
unique_ordered = list(dict.fromkeys(data)) # [1, 2, 3]