Материал: Oracle_SQL_5

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

Группирование по выражениям над столбцами

Запрос. По каждому значению зарплаты, не превышающему 800, выдать это значение и количество преподавателей, такую зарплату получающие.

SELECT Salary + Rise, COUNT(*) FROM TEACHER WHERE Salary + Rise <= 800

GROUP BY Salary + Rise;

SALARY+RISE COUNT(*)

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

720 1

740 1

750 2

800 1

• 4 строк выбрано.

Вкладывание агрегатных функций

SELECT AVG(MIN(Salary)) FROM

TEACHER;

ORA-00978: вложенная групповая функция без GROUP BY

Значения NULL в столбцах группирования

Запрос. По каждому номеру телефона указать количество преподавателей, которые ими пользуются.

SELECT NVL(Tel, 'NULL VALUE') AS "Телефоны", Count(*)

FROM TEACHER

GROUP BY Tel;

Телефоны COUNT(*)

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

2152295 2

5135472 1

5135497 2

5139827 5 NULL VALUE 5

• 5 строк выбрано.

Условие отбора групп

Запрос А.Получить сведения о тех корпусах, суммарное количество мест аудиторий которых превышает 100.

SELECT Building FROM ROOM WHERE

SUM(Seats) > 100 GROUP BY Building;

WHERE SUM(Seats) > 100 * Ошибка в строке 3: ORA-00934: групповая функция здесь не разрешена

является неверной, так как фраза WHERE проверяет условия только на отдельных строках, а мы указали в ней агрегатную функцию, которая вычисляется на группе.

WHERE, GROUP BY и HAVING

обрабатываются в следующем порядке:

если имеется фраза WHERE, то удаляются те строки, которые не удовлетворяют условию этой фразы;

согласно фразе GROUP BY формируются группы строк;

удаляются те группы, которые не удовлетворяют условию фразы

HAVING.

Для выражения условий, которые задаются на группах строк, следует применять фразу HAVING.

Фраза играет такую же роль для групп, что и фраза WHERE для строк: она используется для исключения групп, определяемых фразой GROUP BY, точно так же, как WHERE используется для исключения строк. Эта фраза включается в предложение лишь при наличии фразы GROUP BY, и она должна принимать единственное логическое условие для любой из сформированных групп.

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