Подтвердить что ты не робот

Любая причина для предложения GROUP BY без функции агрегации?

Я (полностью) изучаю SQL на данный момент и натолкнулся на предложение GROUP BY.

GROUP BY объединяет или группирует набор результатов в соответствии с аргументами, которые вы ему даете. Если вы используете этот раздел в запросе, вы можете затем выполнить агрегированные функции на наборе результатов, чтобы найти статистическую информацию о наборе результатов, например, найти средние значения (AVG()) или частоту (COUNT()).

Мой вопрос: является ли оператор GROUP BY любым полезным приложением без сопровождающей агрегатной функции?

Обновление Использование GROUP BY в качестве синонима для DISTINCT (возможно) является плохим, потому что я подозреваю, что он медленнее.

4b9b3361

Ответ 1

является оператором GROUP BY любым полезным образом без сопровождающей агрегатной функции?

Использование DISTINCT было бы синонимом в такой ситуации, но причина, по которой вам нужно/должна определять предложение GROUP BY, была бы в состоянии определить детали предложения HAVING.

Если вам нужно определить предложение HAVING, вы имеете для определения GROUP BY - вы не можете сделать это в сочетании с DISTINCT.

Ответ 2

Группа может использоваться в Двустороннем В основном
1) в соединении с функциями агрегации SQL

2) до удалить повторяющиеся строки из результирующего набора

SO ответ на ваш вопрос лежит во второй части описанных выше USE.

Ответ 3

Вы можете выполнить выбор DISTINCT с помощью GROUP BY без каких-либо AGGREGATES.

Ответ 4

Примечание: все ниже применимо только к MySQL

GROUP BY гарантировано, чтобы возвращать результаты в порядке, DISTINCT нет.

GROUP BY вместе с ORDER BY NULL имеет ту же эффективность, что и DISTINCT (и реализован, скажем, способом). Если в агрегированном (или определенном) поле индексируется индекс, в обоих предложениях используется свободное сканирование индекса по этому полю.

В GROUP BY вы можете возвращать негруппированные и неагрегированные выражения. MySQL выберет любые случайные значения из соответствующей группы для вычисления выражения.

С GROUP BY вы можете опустить выражения GROUP BY из предложения SELECT. С DISTINCT вы не можете. Каждая строка, возвращаемая DISTINCT, гарантированно будет уникальной.

Ответ 5

Используется для более точной агрегации функций.

Например, рассмотрим следующий код:

SELECT product_name, MAX('last_purchased') FROM products GROUP BY product_name

Это приведет к возврату только одного результата на продукт, но с последним обновленным значением этих записей.