г. Минимальную почасовую оплату (PAY_RATE).
д. Общее число строк в таблице.
10-й час Сортировка и группирование данных
Вы уже знаете, как построить запрос к базе данных и получить от нее определенным образом организованные данные. Вы уже знаете, как отсортировать данные запроса. В ходе этого урока мы с вами узнаем как можно разделять полученные данные на группы так, чтобы их легко было воспринимать.
Основными на этом уроке будут следующие темы.
• Зачем группировать данные?
• Выражение GROUP BY
• Функции группирования значений
• Использование итоговых функций
• Группирование по столбцам
• GROUP BY в сравнении сORDER BY
• Выражение HAVING
Зачем группировать данные?
Группирование данных - это размещение данных в столбцах с повторяющимися значениями в определенном логичном порядке. Например, в базе данных содержится информация о служащих. Служащие могут жить в разных городах, но многие из них живут в одном городе. Вполне вероятно, что вам может понадобиться информация по каждому конкретному городу и живущих там служащих. Для этого вы группируете информацию о служащих по городам - и соответствующий отчет готов!
Предположим, что вам необходимо найти среднюю зарплату служащих по каждому из городов. Это можно сделать, применив к столбцу SALARY итоговую функцию AVG, а затем использовав GROUP BY для группирования выводимых данных по городам.
Группирование данных осуществляется с помощью выражения GROUP BY в операторе SELECT. На предыдущем уроке были рассмотрены итоговые функции. В ходе данного урока мы с вами научимся использовать итоговые функции в совокупности с выражением GROUP BY, чтобы лучше организовать представляемые данные.
Ключевое слово GROUP BY
Ключевое слово GROUP BY используется в операторе SELECT для того, чтобы объединять повторяющиеся значения в группы. Ключевое слово GROUP BY должно следовать за выражением WHERE и предшествовать ключевому слову ORDER BY.
Вот какая должна быть последовательность ключевых слов в операторе, выполняющем запрос:
SELECT FROM WHERE GROUP BY ORDER BY
Ключевое слово GROUP BY должно следовать за условиями в выражении ключевого слова WHERE и предшествовать ключевому слову ORDER BY, если последнее имеется.
SELECT столбец1, столбец2
FROM таблица1, таблица2 WHERE условия
GROUP BY столбец1, столбец2
ORDER BY столбец1, столбец2
В следующих разделах рассматривается множество примеров использования ключевого слова GROUP BY в самых разных ситуациях.
Группирование выбранных данных
Группировать данные просто. В выражении ключевого слова GROUP BY могут использоваться только выбранные столбцы (т. е. столбцы из списка ключевого слова SELECT в операторе запроса). Если имя столбца не указано в списке ключевого слова SELECT, то имя этого столбца в выражении ключевого слова GROUP BY использовать нельзя. Это логично - как группировать в отчете данные, которых в нем нет?
Но если столбец выбран, то его имя должно быть включено в выражение ключевого слова GROUP BY. Имя столбца можно представить и его номером, о чем мы поговорим немного позже. При группировании данных порядок группирования столбцов не обязан совпадать с порядком, заданным в выражении ключевого слова SELECT.
К функциям группирования - функциям, используемым в выражении ключевого слова GROUP BY для объединения данных в группы, - относятся AVG, MAX, MIN, зим и COUNT. Это итоговые функции, о которых вы узнали из урока 9, "Подведение итогов по данным запроса" В ходе урока 9 итоговые функции использовались по отношению ко всем данным столбца, а здесь мы рассмотрим использование итоговых функций для группирования повторяющихся значений.
Создание групп и использование итоговых функций
При использовании в операторе SELECT ключевого слова GROUP BY должны соблюдаться некоторые правила. В частности, имена выбранных для отображения столбцов должны присутствовать и в выражении ключевого слова GROUP BY, за исключением тех, к которым применены итоговые функции. Столбцы в выражении ключевого слова GROUP BY не обязательно должны быть представлены в том же порядке, что и в выражении ключевого слова SELECT. Но если имя столбца указано в выражении ключевого слова SELECT, имя этого столбца должно присутствовать и в выражении ключевого слова GROUP BY. Вот несколько примеров использования оператора SELECT с ключевым словом GROUP BY.
Пример
SELECT EMP_ID, CITY
FROM EMPLOYEEJTBL
GROUP BY CITY, EMP_ID;
В этом операторе SQL из таблицы EMPLOYEE_TBL выбираются столбцы EMP_ID и CITY, а данные последних выводятся сгруппированными сначала по CITY, а затем по EMP_ID.
Читать дальше