Команда DISTINCT
Команда DISTINCT позволяет выбирать
только уникальные значения из базы данных
(то есть отсеивает дубли: к примеру, в таблице
есть два одинаковых значения - тогда запрос
выведет только одно из них).
Синтаксис
При выборке:
SELECT DISTINCT field FROM table_name WHERE condition
При подсчете:
SELECT COUNT(DISTINCT field) FROM table_name WHERE condition
При суммировании:
SELECT SUM(DISTINCT field) FROM table_name WHERE condition
Таблицы для примеров
| 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 и 900):
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 |
|---|
| 1800 |