Оператор SQL: DISTINCT. — it-black.ru
Оператор SQL: DISTINCT. — it-black.ruОператор DISTINCT используется для указания на то, что следует работать только с уникальными значениями столбца.
Он нашел широкое применение в операторе SQL SELECT, для выборки уникальных значений. Так же используется в агрегатных функциях. Синтаксис оператора:
SELECT DISTINCT column_name FROM table_name;
Примеры оператора SQL DISTINCT. Имеется следующая таблица Artists:
Singer | Album | Year | Sale |
The Prodigy | Invaders Must Die | 2008 | 1200000 |
Drowning Pool | Sinner | 2001 | 400000 |
Massive Attack | Mezzanine | 1998 | 2300000 |
The Prodigy | Fat of the Land | 1997 | 600000 |
The Prodigy | Music For The Jilted Generation | 1994 | 1500000 |
Massive Attack | 100th Window | 2003 | 1200000 |
Drowning Pool | Full Circle | 2007 | 800000 |
Massive Attack | Danny The Dog | 2004 | 1900000 |
Drowning Pool | Resilience | 2013 | 500000 |
Пример 1. Используя оператор SQL DISTINCT вывести, какие исполнители (Singer) имеются в таблице:
SELECT DISTINCT Singer FROM Artists;
Пример 2. Используя оператор SQL DISTINCT и COUNT вывести количество уникальных исполнителей в таблице:
SELECT COUNT(DISTINCT Singer) AS CountOfSingers FROM Artists;
Результат:
Цыфра “3” т.к. в таблице 3 музыкальных группы, которые просто повторяются и уже не уникальны.
Самостоятельно создайте таблицу Artists и выполните каждый пример. В комментариях можете писать новые примеры к данной таблице и не только.
Поделиться в facebook
Поделиться в twitter
Поделиться в vk
VK
Поделиться в google
Google+
Группа в VK
Помощь проекту
Обнаружили опечатку?
Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!
Свежие статьи
Облако меток
Instagram Vk Youtube Telegram Odnoklassniki
Полезно знать
Рубрики
Авторы
© it-black.
ru | 2016 — 2022sql — В чем разница между DISTINCT и GROUP BY?
Читаем:
Оператор SQL DISTINCT используется для указания на то, что следует работать только с уникальными значениями столбца.
Оператор SQL GROUP BY используется для объединения результатов выборки по одному или нескольким столбцам.
В результате работы с этими предикатами мы получаем уникальные записи по какому либо ключу. Не могу понять в чем их различие.
—- Добалено ——
В моем понимании что GROUP BY — это группировка по какому либо признаку, а то есть например есть поле со значениями:
1 2 3 1 2 3
после GROUP BY они должны стать:
1 1 2 2 3 3
а на деле получаем:
1 2 3
В чем причина?
8DISTINCT — получить уникальные строки (отличающиеся друг от друга любым отображаемым полем). Работает чуть быстрее.
GROUP BY — сгруппировать по какому-либо признаку, при этом можно использовать агрегатные функции SUM, AVG, MAX и т.д.
Добавлено
Дано
1 2 3 1 2 3
С помощью ORDER BY получим сортировку
1 1 2 2 3 3
С помощью DISTINCT уникальные значения
1 2 3
А с помощью GROUP BY можно посчитать кол-во вхождений
SELECT value, COUNT(*) FROM table_test value COUNT(*) 1 2 2 2 3 2
7
Разница в механике работы. Distinct — возвращает уникальные значения, GroupBy — группирует ВСЕ значения. В некоторых случаях результат будет одним и тем же. Правило использование простое — если можно использовать Distinct, используй его, если нет — то Gorup by.
SELECT DISTINCT исключает из результата повторяющиеся строки. SELECT DISTINCT ON исключает строки, совпадающие по всем указанным выражениям. SELECT ALL (по умолчанию) возвращает все строки результата, включая дубликаты.
GROUP BY — просто схлопывает повторяющиеся результаты в один.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
SQL Server SELECT DISTINCT
Резюме : в этом руководстве вы узнаете, как использовать предложение SQL Server SELECT DISTINCT
для получения единственных различных значений в указанном списке столбцов.
Введение в SQL Server
Предложение SELECT DISTINCT
Иногда может потребоваться получить только отдельные значения в указанном столбце таблицы. Для этого вы используете предложение SELECT DISTINCT
следующим образом:
ВЫБЕРИТЕ ОТЛИЧНЫЙ имя_столбца ОТ имя_таблицы;
Язык кода: SQL (язык структурированных запросов) (sql)
Запрос возвращает только различные значения в указанном столбце. Другими словами, он удаляет повторяющиеся значения в столбце из набора результатов.
Если вы используете несколько столбцов следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT имя_столбца1, имя_столбца2, . .. ОТ имя_таблицы;
Запрос использует комбинацию значений во всех указанных столбцах в списке SELECT
для оценки уникальности.
Если применить предложение DISTINCT
к столбцу со значением NULL, предложение DISTINCT
сохранит только одно значение NULL и удалит другое. Другими словами, предложение DISTINCT
рассматривает все «значения» NULL как одно и то же значение.
SQL Server
SELECT DISTINCT
примеровДля демонстрации мы будем использовать 9Таблица 0005 клиентов из примера базы данных.
A)
DISTINCT
Пример одного столбца Следующий оператор возвращает все города всех клиентов в таблицах клиентов
:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT город ОТ продажи. клиенты СОРТИРОВАТЬ ПО город;
Как видно из вывода, города дублируются.
Чтобы получить разные города, вы добавляете DISTINCT
ключевое слово следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT город ОТ продажи.клиенты СОРТИРОВАТЬ ПО город;
Теперь запрос возвращает отдельное значение для каждой группы дубликатов. Другими словами, он удалил все города-дубликаты из набора результатов.
B)
DISTINCT
пример нескольких столбцовЭтот оператор возвращает все города и штаты всех клиентов:
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБЕРИТЕ Город, государство ОТ продажи. клиенты СОРТИРОВАТЬ ПО Город, государство;
Следующий оператор находит отдельные города и штаты всех клиентов.
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБЕРИТЕ ОТЛИЧНЫЙ Город, государство ОТ продажи.клиенты
В этом примере оператор использовал комбинацию значений в обоих город
и столбцы состояния
для оценки дубликатов.
C)
DISTINCT
с нулевыми значениями примерСледующий пример находит различные телефонные номера клиентов:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT Телефон ОТ продажи. клиенты СОРТИРОВАТЬ ПО Телефон;
В этом примере предложение DISTINCT
оставило только одно значение NULL в телефоне
и удалили остальные значения NULL.
DISTINCT
по сравнению с GROUP BY
В следующем операторе используется предложение GROUP BY
для возврата отдельных городов вместе со штатом и почтовым индексом из таблицы sales.customers
Город,
государство,
почтовый индекс
ОТ
продажи.клиенты
ГРУППА ПО
Город (*): Штат (*): Почтовый Индекс
СОРТИРОВАТЬ ПО
город, штат, почтовый индекс 5
На следующем рисунке показан частичный вывод:
Это эквивалентно следующему запросу, использующему оператор DISTINCT
:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT ОТЧЕТЛИВЫЙ Город, государство, почтовый индекс ОТ продажи. клиенты;
Оба предложения DISTINCT
и GROUP BY
уменьшают количество возвращаемых строк в результирующем наборе за счет удаления дубликатов.
Однако следует использовать предложение GROUP BY
, если вы хотите применить агрегатную функцию к одному или нескольким столбцам.
Из этого руководства вы узнали, как использовать предложение SQL Server SELECT DISTINCT
для получения уникальных значений в указанном списке столбцов.
Устранение дубликатов с помощью оператора SQL DISTINCT
Резюме : в этом руководстве вы узнаете, как использовать оператор SQL DISTINCT для устранения повторяющихся строк в результирующем наборе.
Результирующий набор оператора SELECT может содержать повторяющиеся строки. Чтобы устранить дубликаты, вы используете оператор DISTINCT
следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT select_list ОТ имя_таблицы;
Обратите внимание, что оператор DISTINCT
можно использовать только в операторе SELECT
.
Оператор SELECT
использует значения столбцов, указанных после DISTINCT
Оператор для оценки уникальности строк в результирующем наборе.
Если указать один столбец, база данных использует значения в столбце для оценки уникальности. Если вы укажете несколько столбцов, механизм базы данных оценивает уникальность строк на основе комбинации значений в этих столбцах.
Примеры операторов SQL DISTINCT
Давайте рассмотрим несколько примеров использования оператора DISTINCT
в SELECT 9Заявление 0006.
1) Пример использования SQL DISTINCT с одним столбцом
Следующий запрос получает город сотрудника в таблице сотрудников
:
Кодовый язык: SQL (Structured Query Language) (sql)
SELECT city FROM сотрудников
Набор результатов содержит повторяющийся город, т. е. London
встречается четыре раза, что указывает на то, что некоторые сотрудники находятся в одном городе.
Чтобы удалить повторяющиеся города, вы можете использовать кнопку DISTINCT
оператор, как показано в следующем запросе:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT город ОТ сотрудники;
2) Пример использования SQL DISTINCT с несколькими столбцами
Чтобы найти список уникальных городов и стран из таблицы сотрудников
, можно указать Столбцы city
и country
после оператора DISTINCT
, как показано в следующем запросе:
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ ОТЛИЧНЫЙ столица ОТ сотрудники;
В этом примере DISTINCT
использует комбинацию значений в столбцах города и страны для определения уникальности строк в результирующем наборе.
Использование SQL DISTINCT с NULL
Оператор DISTINCT
обрабатывает NULL
дубликат. Это означает, что два NULL
одинаковые. Следовательно, если оператор SELECT
возвращает NULL
s, DISTINCT
возвращает только один NULL
.
Следующий оператор SELECT
выбирает все регионы из столбца region
таблицы сотрудников
:
SELECT region FROM сотрудников;
Как видно из вывода, запрос возвращает повторяющиеся регионы. Например, NULL встречается четыре раза.
Следующая инструкция SELECT использует оператор DISTINCT для выбора уникальных регионов из таблицы сотрудников:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT region ОТ сотрудников;
Набор результатов теперь имеет уникальные области.
DISTINCT vs. ALL
Отдельно стоит упомянуть оператор ALL
. В отличие от оператора DISTINCT
, оператор ALL
включает все строки, содержащие повторяющиеся значения. Следующие запросы возвращают тот же набор результатов.
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ ВСЕ select_list ОТ имя_таблицы;
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT select_list ОТ имя_таблицы;
Оператор SELECT
по умолчанию использует оператор ALL
. Поэтому вам не нужно явно указывать это в операторе.