
- •Создание запросов на языке sql.
- •Sql- язык структурированных запросов
- •Ключевые слова sql
- •Предложение select может использоваться как:
- •Sql: извлечение данных - команда select
- •Общие понятия
- •2. Запросы на выборку
- •3. Содержание работы
- •Sql: select-запросы -агрегирование и групповые функции
- •Общие понятия
- •2. Содержание работы
- •3. Пустые значения (null) в агрегирующих функциях
- •Влияние null-значений в функции count.
- •Влияние null-значений и функции avg.
- •4. Упорядочение выходных полки (order by)
Sql: select-запросы -агрегирование и групповые функции
ЦЕЛЬ РАБОТЫ:
• научиться использовать агрегирующие и групповые функции.
• научиться выполнять упорядочение выходных полей с помощью ORDER BY.
Общие понятия
Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в 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, указывают только поля или выражения, которые на выходе имеют единственное значение для каждой
выводимой группы.