Я (полностью) изучаю SQL в данный момент и столкнулся GROUP BY
пункт.
GROUP BY
агрегировал или группирует набор результатов согласно аргументу (аргументам), который Вы даете ему. При использовании этого пункта в запросе, можно затем выполнить агрегатные функции на наборе результатов для нахождения статистической информации о наборе результатов как нахождение средних чисел (AVG())
или частота (COUNT())
.
Мой вопрос: оператор GROUP BY всегда полезен без сопроводительной агрегатной функции?
Обновление Используя GROUP BY
как синоним для DISTINCT
(вероятно), плохая идея, потому что я подозреваю, что это медленнее.
полезен ли оператор GROUP BY без сопутствующей агрегатной функции?
Использование DISTINCT
было бы синонимом такого ситуация, но причина, по которой вы хотите / должны определить предложение GROUP BY
, заключается в том, чтобы иметь возможность определять детали предложения HAVING
.
Если вам нужно определить предложение HAVING
, у вас есть для определения GROUP BY
- вы не можете сделать это вместе с ОТЛИЧИТЕЛЬНЫЙ
.
Группировка по может использоваться в Двустороннем В основном
1) в соединении с функциями агрегирования SQL
2) для исключить повторяющихся строк из набора результатов
Итак, ответ на ваш вопрос заключается во второй части описанных выше USE.
Выбор DISTINCT можно выполнить с помощью GROUP BY без AGGREGATES .
-121--1625677-Сослагательный падеж в английском языке.
Подождите, вы имели в виду языки программирования? Затем с помощью (macro)
в C для обхода препроцессора # определите
из macro ()
. Например, если кто-то имеет # define free (...)
, (free) (...)
не будет таким же, как free (...)
.
Используется для более, чем просто агрегирования функций.
Рассмотрим, например, следующий код:
SELECT product_name, MAX('last_purchased') FROM products GROUP BY product_name
Это возвращает только 1 результат на продукт, но с последним обновленным значением этих записей.
Примечание: все нижеприведенное относится только к MySQL
GROUP BY
гарантировано для возврата результатов по порядку , DISTINCT
- нет.
GROUP BY
вместе с ORDER BY NULL
имеет ту же эффективность, что и DISTINCT
(и реализовано таким образом). Если есть индекс для агрегируемого (или определяемого) поля, оба предложения используют свободное сканирование индекса по этому полю.
В GROUP BY
вы можете возвращать несгруппированные и неагрегированные выражения. MySQL
выберет любые случайные значения из соответствующей группы для вычисления выражения.
С помощью GROUP BY
вы можете опустить выражения GROUP BY
из предложения SELECT
. С DISTINCT
вы не можете. Каждая строка, возвращаемая DISTINCT
, гарантированно уникальна.
Вы можете выполнить выбор DISTINCT , используя GROUP BY без каких-либо AGGREGATES .