Группировка данных
SELECT поле1. поле2.. полеИ
FROM Таблица1 {, Таблица2. Таблицам}
WHERE условие
GROUP BY поле1, поле2.. полеИ
ORDER BY поле1 {ASC | DESC}
Например, если выбрать из таблицы Товары два поля — Наименование и Категория, а затем сгруппировать их с помощью следующего запроса, то результат выборки будет упорядочен по значению первого поля, указанного в предложении GROUP BY (рис.
11.23):SELECT Наименование. Категория FROM Товары
GROUP BY Категория, Наименование
Если в запросе выбрать только одно поле и выполнить для него группировку, то результирующая выборка не будет содержать дублирующих друг друга записей. Например, если выполнить запрос, аналогичный предыдущему (см. рис. 11.23), но выбрать только поле Категория, как показано ниже, то выборка будет содержать только три записи (рис. 11.24):
SELECT Категория FROM Товары GROUP BY Категория
Рис. 11.23. Пример группировки данных |
Рис. 11.24. Результат группировки одного поля |
В этом случае группировка дает такой же результат, как применение оператора SELECT с параметром DISTINCT и предложением ORDER BY.
Поскольку применение одного предложения GROUP BY не дает никакого нового результата, то совместно с ним, как правило, используются функции агрегирования. В этом случае они служат для вычисления итоговых значений по отдельным группам данных.
Например, чтобы подсчитать количество покупок товаров, сделанных каждым из клиентов, используется следующий запрос:
SELECT [Код клиента].
БиМ(Продано) AS [Количество покупок]
FROM Продажи
GROUP BY [Код клиента]
Результат выполнения такого запроса приведен на рис. 11.25.
Результаты группировки можно упорядочить с помощью предложения ORDER BY, а в операторе SELECT, содержащем предложение группировки, использовать предложение WHERE. Для иллюстрации этой возможности модифицируем предыдущий запрос следующим образом: выберем только тех клиентов, которые сделали за один раз более 10 покупок, и упорядочим результаты выборки по возрастанию:
SELECT [Код клиента],
SUM(flpoflaHo) AS [Количество покупок]
FROM Продажи WHERE Продано>10 GROUP BY [Код клиента]
ORDER BY 2 DESC
Результат выполнения данного запроса изображен на рис. 11.26.
Рис. 11.25. Использование агрегирующих функций при группировке данных |
Рис. 11.26. Пример сортировки результатов выборки с помощью предложения GROUP BY |
Для задания ограничений на создаваемые группы совместно с ключевым словом GROUP BY может использоваться предложение HAVING. Оно должно следовать после предложения GROUP BY, но до предложения ORDER BY (если оно присутствует в запросе).
В предыдущем примере в качестве условия было задано количество покупок за один раз.
Если мы хотим установить ограничение на общее количество покупок, то нужно применить предложение HAVING:SELECT [Код клиента],
БимШродано) AS [Количество покупок]
FROM Продажи WHERE Продано>10 GROUP BY [Код клиента]
HAVING Бим(Продано)>20 ORDER BY 2 DESC
Результат выполнения запроса приведен на рис. 11.27.
Рис. 11.27. Пример использования предложения HAVING |
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
В предложении HAVING не обязательно использовать только те поля, которые заданы в списке оператора SELECT.
Модифицируем рассмотренный пример (см. рис. 11.27) таким? образом, чтобы ограничение было наложено не на количество купленных товаров, а на их стоимость:
SELECT [Код клиента].
Бим(Продано) AS [Количество покупок]
FROM Продажи
GROUP BY [Код клиента]
HAVING SUM(Продано*Цена)>25000 ORDER BY 2 DESC
Данный запрос учитываёт клиентов, купивших товаров более чем на 25 000, и отображает количество сделанных ими покупок (рис. 11.28).
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
В предложении GROUP BY, в отличие от предложения ORDER BY, нельзя вместо имен выбранных полей использовать их порядковые номера в списке оператора SELECT.
Рис. 11.28. Пример запроса с предложением HAVING |
Еще по теме Группировка данных:
- ГРУППИРОВКА
- ПЛАНЕТАРНЫЕ ГРУППИРОВКИ ЗНАКОВ
- Григорьев Ю.А., Ревунков Г.И.. Банки данных, 2002
- Анализ и интерпретация полученных данных
- Анализ и интерпретация полученных данных
- 12.4. Анализ эмпирических данных
- Оценка данных о личности.
- 18.4. Права субъекта персональных данных
- Банк данных
- 5.1. Табличное представление данных
- 4.1. Общие принципы анализа данных
- Подготовка исходных данных
- 4.5. Право изготовителя базы данных
- 3.3.4. Методы обработки и анализа данных
- 5.3. Графическое представление данных
- 18.7. Уполномоченный по правам субъектов персональных данных
- Глава 9 Создание экспертной базы данных
- 2. Регистрация программ, баз данных и охраняемых топологий
- 3.3.2. Обоснование методов сбора эмпирических данных