Составление запросов, требующих использования числовых, символьных функций и функций для работы с датами.
Вычисление продолжительности работы служащего в месяцах и годах.
Напишите запрос для вывода текущей даты. Назовите столбец Date.
SELECT to_char(sysdate, 'dd-MON-yy') "DATE" from dual;
DATE
08-НОЯ-13
DATE
08-MAR-01
Выведите номер служащего, его фамилию, оклад и новый оклад, повышенный на 15.5% и округлённый до целого. Назовите столбец NewSalary. Сохраните команду SQL в текстовом файле lab3_2sql.
select employee_id, last_name, salary, round(salary+salary*0.155,0) "New Salary" from employees order by employee_id;
EMPLOYEE_ID
LAST_NAME
SALARY
New Salary
King
Kochhar
De Haan
Hunold
Ernst
Austin
Pataballa
Lorentz
Greenberg
Faviet
Chen
Sciarra
Urman
Popp
Raphaely
Khoo
Baida
Tobias
Himuro
Colmenares
107 rows selected
Выполните запрос из файла lab3_2sql.
EMPLOYEE_ID
LAST_NAME
SALARY
New Salary
King
Kochhar
De Haan
Hunold
Ernst
………
select employee_id, last_name, salary, round(salary+salary*0.155,0) "New Salary" from employees order by employee_id;
EMPLOYEE_ID
LAST_NAME
SALARY
New Salary
King
Kochhar
De Haan
Hunold
Ernst
Austin
Измените lab3_2.sql. добавьте ещё один столбец, который будет содержать результат вычитания старого оклада из нового. Назовите столбец Increase. Сохраните изменённый запрос в lab3_4.sql. Выполните запрос ещё раз.
EMPLOYEE_ID
LAST_NAME
SALARY
New Salary
Increase
King
Kochhar
De Haan
Hunold
Ernst
select employee_id, last_name, salary, round(salary+salary*0.155,0) "New Salary",round(salary+salary*0.155,0)-salary "Increase" from employees order by employee_id;
EMPLOYEE_ID
LAST_NAME
SALARY
New Salary
Increase
King
Kochhar
De Haan
Hunold
Ernst
Austin
Pataballa
Lorentz
Greenberg
Faviet
Chen
Sciarra
Urman
Popp
Raphaely
Khoo
…………
107 rows selected
Выведите фамилии служащих (первая буква каждой фамилии должна быть заглавной, а остальные - строчными) и длину каждой фамилии для тех служащих, фамилия которых начинается с символа J, A или М. Присвойте соответствующие заголовки столбцам. Отсортируйте результат по фамилии сотрудников.
select upper(substr(last_name,1,1))||lower(substr(last_name,2)) "Name", length(last_name) "Length" from employees
where substr(last_name,1,1) in ('J','A','M') order by last_name;
Name
Length
Abel
Ande
Atkinson
Austin
Johnson
Jones
Mallin
Markle
Marlow
Marvins
Matos
Mavris
Mccain
Mcewen
Mikkilineni
Mourgos
16 rows selected
Name
Length
Abel
Matos
Mourgos
Перепишите запрос таким образом, чтобы пользователь мог при выполнении запроса вводить букву, с которой начинается фамилия сотрудника.
select upper(substr(last_name,1,1))||lower(substr(last_name,2)) "Name", length(last_name) "Length" from employees
where substr(last_name,1,1)=upper('&famil') order by last_name;
Name
Length
Abel
Ande
Atkinson
Austin
7. Создайте запрос для определения срока работы сотрудников в месяцах до текущей даты. Назовите столбец MONTHS_WORKED. Отсортируйте результат в порядке возрастания числа проработанных месяцев. Округлите результат до целого числа.
LAST_NAME
MONTH_WORKED
Zlotkey
Mourgos
Grant
Lorentz
Vargas
Taylor
Matos
Fay
select last_name, round(months_between(sysdate, hire_date),0) "MONTHS_WORKED" from employees order by MONTHS_WORKED;