Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

В чем разница между DISTINCT и GROUP BY?

#sql


Читаем:


  Оператор SQL DISTINCT используется для указания на то, что следует
  работать только с уникальными значениями столбца.
  
  Оператор SQL GROUP BY используется для объединения результатов
  выборки по одному или нескольким столбцам.


В результате работы с этими предикатами мы получаем уникальные записи по какому либо
ключу. Не могу понять в чем их различие.

---- Добалено -----

В моем понимании что GROUP BY - это группировка по какому либо признаку, а то есть
например есть поле со значениями:

1
2
3
1
2
3


после GROUP BY они должны стать:

1
1
2
2
3
3


а на деле получаем:

1
2
3


В чем причина?
    


Ответы

Ответ 1



DISTINCT - получить уникальные строки (отличающиеся друг от друга любым отображаемым полем). Работает чуть быстрее. 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

Ответ 2



Разница в механике работы. Distinct - возвращает уникальные значения, GroupBy - группирует ВСЕ значения. В некоторых случаях результат будет одним и тем же. Правило использование простое - если можно использовать Distinct, используй его, если нет - то Gorup by.

Комментариев нет:

Отправить комментарий