Скачиваний:
82
Добавлен:
29.01.2014
Размер:
116.07 Кб
Скачать

Sql: select-запросы -агрегирование и групповые функции

ЦЕЛЬ РАБОТЫ:

• научиться использовать агрегирующие и групповые функции.

• научиться выполнять упорядочение выходных полей с помощью ORDER BY.

  1. Общие понятия

Агрегирующие функции позволяют получать из таблицы сводную (агреги­рованную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используются следующие ключевые слова:

  • count определяет количество строк или значений поля, выбранных по­средством запроса и не являющихся значениями;

  • sum вычисляет арифметическую сумму всех выбранных значений дан­ного поля;

  • avg вычисляет среднее значение для всех выбранных значений/данною поля;

  • мах вычисляет наибольшее из всех выбранных значений данного поля;

  • min вычисляет наименьшее из всех выбранных значений данного поля.

В SELECT-запросе агрегирующие функции используются, аналогично именам полей, при этом последние (имена полей) используются в качестве аргументов этих функций.

2. Содержание работы

Задание №1 Определить среднее значения по полям МАТЕМАТИКА, ФИЗИКА, ИНФОРМАТИКА в таблице ЛИЧНЫЕ_ДАННЫЕ.

SELECT AVG(МАТЕМАТИКА), AVG(ФИЗИКА), AVG(ИНФОРМАТИКА),

FROM ЛИЧНЫЕ_ДАННЫЕ;

Для запуска запроса нажмите кнопку Запуск на панели инструментов.

Задание №2. Подсчитать общее количество строк в каждой таблице.

Для подсчета общего количества строк следует использовать функцию COUNT со звездочкой

SELECT COUNT (*)

FROM СПИСОК;

Аналогично, определить число строк в таблице ЛИЧНЫЕ_ДАННЫЕ и ГРУППЫ.

Задание №3. Требуется найти максимальное значение оценки по физике. (аналогично, по математике и информатике )

Запрос будет выглядеть следующим образом:

SELECT MAX (ФИЗИКА)

FROM ЛИЧНЫЕ_ДАННЫЕ;

Предложение GROUP BY (группировать по) позволяет группировать запи­си в подмножества, определяемые значениями какого-либо поля, и применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе.

Задание №4. Создать запрос на вывод кода студентов таблицы ЛИЧНЫЕ_ДАННЫЕ, сгруппировав по полю ФИЗИКА.

SELECT КОД_СТУДЕНТА, ФИЗИКА

FROM ЛИЧНЫЕ_ДАННЫЕ

GROUP BY ФИЗИКА, КОД_СТУДЕНТА;

В этом случае строки вначале группируются по значениям первого столбца, а внутри этих групп — и подгруппы но значениям второго столбца. Таким обра­зом, GROUP BY не только устанавливает столбцы, по которым осуществляется группирование, но и указывает порядок разбиения столбцов на группы.

Следует иметь в виду, что в предложении GROUP BY должны быть указа­ны все выбираемые столбцы, приведенные после ключевого слова SELECT, кроме столбцов, указанных в качестве аргумента в агрегирующей функции.

При необходимости часть сформированных с помощью GROUP BY групп может быть исключена с помощью предложения HAVING.

Предложение HAVING определяет критерий, по которому группы следует включать в выходные данные, по аналогии с предложением WHERE которое осуществляет это для отдельных строк.

Задание №5. Выбрать из таблицы ГРУППЫ информацию о преподавателях, сгруппировав их по ФИО, часы которых больше 17ч.

SELECT ПРЕПОДАВАТЕЛЬ, MAX(ЧАСЫ)

FROM ГРУППЫ

GROUP BY ПРЕПОДАВАТЕЛЬ

HAVING MAX (ЧАСЫ) >17;

В условиях, задаваемом предложением HAVING, указывают только поля или выражения, которые на выходе имеют единственное значение для каждой

выводимой группы.