При помощи параметра GROUP BY оператора
SELECT можно указать способ разбиения полученного в результате
выполнения запроса набора записей на группы. В параметре GROUP BY
задается столбец (или столбцы), по значениям которого будет
производиться группировка. Например:
SELECT Name, COUNT(*) "Количество продаж”
FROM Managers m, Outgoing o
WHERE m.Man_id=o.Man_id
GROUP BY Name;
Параметр HAVING оператора SELECT
используется для исключения групп из результирующего набора записей на
основе результатов выполнения групповых функций. После параметра HAVING
также как и после параметра WHERE указывается условие фильтрации, но в
отличие от параметра WHERE, условия которого используются для фильтрации
отдельных строк, условия, указанные в параметре HAVING используются для
фильтрации целых групп. Например:
-- отбор менеджеров, осуществивших за последнюю неделю
-- не менее 10 сделок продажи
SELECT Name, COUNT(*) "Количество продаж”
FROM Managers m, Outgoing o
WHERE m.Man_id=o.Man_id AND o.Out_Date >= TRUNC(SYSDATE)-7
GROUP BY Name
HAVING COUNT(*) >= 10;
Запросы с использованием нескольких таблиц
Эквисоединение таблиц (=)
Эквисоединение таблиц выглядит следующим образом:
SELECT Managers.*, Contracts.*
FROM Managers, Contracts
WHERE Managers.Man_id = Contracts.Man_id;