Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Группирование результатов⇐ ПредыдущаяСтр 31 из 31
Часто встречаются ситуации, когда в отчет необходимо поместить и промежуточные результаты, опирающиеся на вычисления обобщенных групповых значений. Для применения агрегатных функций в подобных случаях предполагается предварительная операция группировки. Суть операции группировки состоит в том, что все множество строк таблицы разбивается на группы, в каждой из которых собираются строки, имеющие одинаковые значения атрибутов, которые заданы в списке группировки. Обработка такой информации реализуется путем применения агрегатных функций уже к каждой отдельной группе и выдаче полученных итогов. В языке 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; Нарушение авторских прав |