Группирование результатов


Часто встречаются ситуации, когда в отчет необходимо поместить и промежуточные результаты, опирающиеся на вычисления обобщенных групповых значений. Для применения агрегатных функций в подобных случаях предполагается предварительная операция группировки. Суть операции группировки состоит в том, что все множество строк таблицы разбивается на группы, в каждой из которых собираются строки, имеющие одинаковые значения атрибутов, которые заданы в списке группировки. Обработка такой информации реализуется путем применения агрегатных функций уже к каждой отдельной группе и выдаче полученных итогов.

В языке SQL для осуществления операции группировки в оператор SELECT включается фраза GROUP BY. Запрос, в котором присутствует фраза GROUP BY, называется группирующим запросом, а столбцы, перечисленные в этой фразе, называются группирующими столбцами.

В дальнейшем в качестве примера будем работать с двумя БД: НИР и Сессия.

БД НИР состоит из одной таблицы, в которой хранится информация о производимых выплатах специалистам за проделанную работу по определенным этапам НИР: R= (ФИО, Этап, Начисления).

Пусть таблица содержит следующие данные.

r

БД Сессия включает в себя сводную таблицу, где представлены

экзаменационные оценки студентов, полученные ими в сессию по

определенным дисциплинам:

S = (ФИО, Дисциплина, Оценка);

s

Cформируем к базам данных несколько запросов.

Запрос 7

БД НИР. Для каждого специалиста определить сумму, выплаченную

за работу по данной теме, и количество сделанных ему выплат.

Для формирования запроса включим в предложение SELECT следующую информацию: ФИО, COUNT (Начисления) AS count, SUM (Начисления) AS sum,где в качестве имен для двух вычисляемых столбцов используются псевдонимы. Группировку будем производить постолбцу ФИО. Для того чтобы проще было просматривать результаты, выводимые данные представим в отсортированном по столбцу ФИОвиде

SELECT ФИО, COUNT (Начисления) AS count, SUM (Начисления)

AS sum FROM r GROUP BY ФИО

ORDER BY ФИО;

Результат запроса:

Запрос 8

БД Сессия. Для каждой дисциплины определить количество

студентов, сдавших экзамен.

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

SELECT Дисциплина, COUNT (*) AS count

FROM s

GROUP BY Дисциплина

ORDER BY Дисциплина;

Результат запроса:

Запрос 9

БД НИР. В условиях предыдущего запроса вывести информацию, касающуюся только тех специалистов, которым производились начисления более одного раза.

Для вывода такой информации в текст предыдущего запроса необходимо добавить фразу HAVING COUNT (Начисления! > 1. И в этом случае весь запрос примет вид

SELECT ФИО, СОШТ (Начисления) AS count, SUM (Начисления)

AS sum

FROM r

GROUP BY ФИО

HAVING COUNT(Начисления) > 1

ORDER BY ФИО,-

Результаты выполнения запроса представлены ниже.

Вложенные запросы

Стандарт языка позволяет в тело одного оператора SELECT внедрять другой оператор SELECT. Если внутренний оператор запроса помешен в предложения WHERE И HAVING внешнего оператора SELECT, TO создается ситуация вложенных запросов (подзапросов).

Запрос 10

БД НИР. Вывести список платежей, где величина единовременных

начислении превысила среднее значение.

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

SELECT ФИО, Этап, Начисления

FROM r

WHERE Начисления > (SELECT avg(Начисления) FROM r);

Результат запроса:



Дата добавления: 2016-07-05; просмотров: 1702;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.