Основы программирования в СУБД Oracle. SQL+PL/SQL. - страница 39

Шрифт
Интервал



9. Для сотрудников, работающих в отделе 50, вывести разницу между текущей датой и датой приема на работу в формате: УУ лет ММ месяцев ДД дней.


10. Вывести значения столбцов employee_id, first_name, last_name, salary и премию, которую они должны получить. Размер премии у сотрудников, которые получают комиссионные, равен зарплате с учетом комиссионных. Размер премии у сотрудников, которые не получают комиссионные, равен зарплате, увеличенной на 30%.


11. Вывести значения столбцов employee_id, first_name, last_name, salary и bonus – премию, которую они должны получить. Размер премии зависит от рейтинга и вычисляется по следующему правилу:

– если рейтинг сотрудника равен 5, то bonus = salary * 1.5;

– если рейтинг сотрудника равен 4, то bonus = salary * 1.3;

– если рейтинг сотрудника равен 3, то bonus = salary * 1.1;

– сотрудникам, рейтинг которых меньше 3, премия не полагается.


12. Вывести значения столбцов employee_id, first_name, last_name, salary и category. Значение категории (category) определяется по следующему правилу:

– если rating_e ≥ 4 и salary ≥ 10 000, то category = ′High′;

– если rating_e <3 и salary <5000, то category = ′Low′;

– у остальных сотрудников category = ′Middle′.

Глава 4. Агрегатные функции и группировка данных

Агрегатные функции

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


Таблица 4.1. Агрегатные функции



Синтаксис агрегатных функций:


{имя функции} ({Аргумент})


где: expr – аргумент агрегатной функции, который может содержать следующие элементы:


[DISTINCT] {имя столбца} | {выражение} | {однострочная функция}


Следует обратить внимание на то, что аргументом групповой функции может быть однострочная функция. Хотя стандарт языка SQL запрещает использование агрегатных функций в качестве аргумента агрегатных функций, СУБД Oracle допускает это, но только на один уровень в глубину и только в предложении SELECT. Рассмотрим примеры использования агрегатных функций.


Пример 4.1. Вывод обобщенных данных о зарплате сотрудников


SELECT MIN (salary) AS minimum, MAX (salary) AS maximum, ROUND (AVG (salary)) AS medium, SUM (salary) As summa, COUNT (salary), COUNT (*)

FROM Employees;



В полученном результате следует обратить внимание на то, что: