Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





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

В языке 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);

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







Date: 2016-07-18; view: 372; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию