Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОРМАТИРОВАНИЕ СВОДНОЙ ТАБЛИЦЫ.docx
Скачиваний:
8
Добавлен:
12.04.2015
Размер:
188.49 Кб
Скачать

Группировка данных

Предложение GROUP BY является одним из основных компо­нентов команды SELECT и позволяет определять некоторое под­множество значений для указанного в запросе поля и применять агрегатную функцию к полученному подмножеству. Это дает возможность значительно расширить диапазон использования агрегатных функций в предложении SELECT.

Предложение GROUP BY имеет следующий синтаксис:

SELECT selectionjist FROM table_name (GROUP BY groupjist];

где groupjist обозначает список группировки с указанием элементов таблицы, в которых будут формироваться подмноже­ства значений. В качестве элементов таблицы могут выступать имена столбцов, выражения или их порядковые номера.

Например, узнаем, сколько студентов проживает в каждой об­ласти (поле fRegion). Для этого можно использовать оператор GROUP BY, при помощи которого следует выполнить группировку по полю fRegion таблицы tbIStudents. При этом все записи по ка­ждой области будут объединены в отдельные группы. В каждой такой группе может быть от одной до нескольких записей в зави­симости от того, сколько студентов проживает в данной области.

После этого с помощью функции COUNT подсчитаем количест­во записей в каждой отдельной группе. У функции в качестве ар­гумента следует указывать то поле, из которого будут выбираться данные для подсчета; для нашего примера - это поле fRegion. Команду выборки можно записать в следующем виде:

SELECT fRegion, COUNT (fRegion)

FROM tbIStudents GROUP BY fRegion;

В первом столбце запроса отобразятся названия областей, а во втором - количество проживающих в каждой из них студентов.

В рассмотренном примере использовалась группировка дан­ных всей таблицы в целом. После этого для полученных групп данных применялась агрегатная функция. Однако не всегда име­ется необходимость обработки всех записей таблицы в целом, особенно если она очень велика. Обычно обрабатывается только необходимый диапазон значений, для чего в запросе использует­ся предложение WHERE.

При совместной работе в запросе предложений WHERE и GROUP BY их вычисление производится в три этапа следующим образом:

  1. Из таблицы отбираются только те строки, которые удовлетво­ряют условиям, заданным в предложении WHERE.

  2. Выделенный диапазон строк делится предложением GROUP BY на группы.

  3. К полученным данным применяются агрегатные функции, имеющиеся в списке выбора оператора SELECT.

Например, требуется узнать, сколько студентов проживает в Московской и Белгородской областях. Для решения этой задачи вначале необходимо среди всех областей выделить Московскую и

Белгородскую, затем сгруппировать записи по областям (поле fRe­gion), после чего при помощи агрегатной функции COUNT подсчи­тать количество студентов, проживающих в каждой из областей.

В результате получится такой запрос:

SELECT fRegion, COUNT (fRegion)

FROM tbIStudents

WHERE fRegion IN ('Московская', 'Белгородская')

GROUP BY fRegiftn;

Как и для обычных запросов, результаты выборки с использо­ванием группировки также можно расположить в определенном порядке для улучшения работы с ними.

Например, составим запрос, отображающий количество сту­дентов, проживающих в Московской, Петербуржской и Белго­родской областях. При этом данные должны выводиться по убы­ванию количества студентов (т.е. наиболее «населенная» область должна отображаться первой).

Запрос будет иметь следующий вид:

SELECT fRegion, COUNT (fRegion)

FROM tbIStudents

WHERE fRegion IN ('Московская', 'Петербуржская', 'Белгородская')

GROUP BY fRegion ORDER BY 2 DESC;

Примечание. Как уже отмечалось, все предложения в операторе SE­LECT следуют в определенном порядке. Поэтому GROUP BY всегда должно находиться перед ORDER BY, иначе возникнет ошибка.