Команда DISTINCT
Команда DISTINCT позволяет выбирать
только уникальные значения из базы данных
(то есть отсеивает дубли: к примеру, в таблице
есть две Маши - тогда запрос выведет только
первую).
Синтаксис
При выборке:
SELECT DISTINCT поле FROM имя_таблицы WHERE условие
При подсчете:
SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие
При суммировании:
SELECT SUM(DISTINCT поле) FROM имя_таблицы WHERE условие
Таблицы для примеров
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 400 |
| 2 | user2 | 25 | 500 |
| 3 | user3 | 23 | 500 |
| 4 | user4 | 30 | 900 |
| 5 | user5 | 27 | 500 |
| 6 | user6 | 28 | 900 |
Пример
Давайте выберем все уникальные значения зарплат из таблицы:
SELECT DISTINCT salary FROM employees
Результат выполнения кода:
| salary зарплата |
|---|
| 400 |
| 500 |
| 900 |
Пример
Давайте подсчитаем все уникальные значения
зарплат из таблицы (их будет 3 штуки:
400, 500 и 1000):
SELECT COUNT(DISTINCT salary) as count FROM employees
Результат выполнения кода:
| count количество |
|---|
| 3 |
Пример
Давайте подсчитаем одновременно все уникальные значения зарплат и уникальные значения возрастов и запишем их в разные поля:
SELECT
COUNT(DISTINCT salary) as salary_count,
COUNT(DISTINCT age) as age_count
FROM employees
Результат выполнения кода:
| salary_count зарплата |
age_count возраст |
|---|---|
| 3 | 5 |
Пример
Давайте просуммируем все уникальные значения
зарплат из таблицы employees:
SELECT SUM(DISTINCT salary) as sum FROM employees
Результат выполнения кода:
| sum суммарная зарплата |
|---|
| 1900 |