Материал: Oracle_SQL_5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Функция SUM (2)

Запрос. Сколько профессоров в ВУЗе и какова суммарная их зарплата?

SELECT COUNT(*), SUM( Salary + Rise) FROM

TEACHER

WHERE UPPER(Post) = 'ПРОФЕССОР';

COUNT(*) SUM(SALARY+RISE)

---------- -----------------

3 4660

Функция AVG

Запрос. Какое количество аудиторий в корпусе 6, их суммарная и средняя вместимость:

SELECT COUNT(*) AS "К-во ауд в к.6", SUM(Seats) AS "Их общая вместимость", AVG(Seats) AS "Их средняя вместимость"

FROM ROOM

WHERE Building = '6';

К-во ауд в к.6 Их общая вместимость Их средняя вместимость

----------------

-----------------------

------------------------

4

162

40,5

Функции MIN и MAX (1)

Запрос. Какой максимальный фонд финансирования среди факультетов?

SELECT MAX(Fund)

FROM FACULTY;

MAX(FUND)

----------

27000

Функции MIN и MAX (2)

Обратите внимание, что если бы вы захотели вместе с максимальным фондом получить и название этого факультета:

SELECT Name, MAX(Fund)

FROM FACULTY;

SELECT Name, MAX(Fund)

*

Ошибка в строке 1: ORA-00937: групповая функция не является одногруппной

Напоминаем еще раз, при отсутствии фразы GROUP BY во фразе SELECT нельзя одновременно использовать имена столбцов (выражения над столбцами) и агрегатные функции !!!

Запросы с группировкой строк

Фраза GROUP BY позволяет объединить множество строк в группы по признаку равенства значений одного или нескольких столбцов (выражений над столбцами). В этом случае агрегатные функции, используемые во фразе SELECT, действуют не на всем результирующем отношении, а в пределах каждой группы.

Общий синтаксис фразы следующий:

GROUP BY выражение_ 1 [, выражение_2]...

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

Источник: https://studfile.net/preview/16419787/