Составление запросов, требующих использования числовых, символьных функций и функций для работы с датами.
Использование конкатенации с функциями.
Составление запросов, нечувствительных к регистру символов, для проверки полезности символьных функций.
Вычисление продолжительности работы служащего в месяцах и годах.
Определение даты аттестации служащего.
Получите по каждому служащему отчёт в следующем виде: <фамилия> зарабатывает <оклад> в месяц, но желает <утроенный оклад>. Назовите столбец DreamSalaries
select last_name||' зарабатывает '||to_char(salary,'fm$999,999.00')||' в месяц, но желает ' ||to_char(salary*3,'fm$999,999.00') "Dream Salaries" from employees order by employee_id;
Dream Salaries
King зарабатывает $24,000.00 в месяц, но желает $72,000.00
Kochhar зарабатывает $17,000.00 в месяц, но желает $51,000.00
De Haan зарабатывает $17,000.00 в месяц, но желает $51,000.00
Hunold зарабатывает $9,000.00 в месяц, но желает $27,000.00
Ernst зарабатывает $6,000.00 в месяц, но желает $18,000.00
Austin зарабатывает $4,800.00 в месяц, но желает $14,400.00
Pataballa зарабатывает $4,800.00 в месяц, но желает $14,400.00
Lorentz зарабатывает $4,200.00 в месяц, но желает $12,600.00
Greenberg зарабатывает $12,000.00 в месяц, но желает $36,000.00
Faviet зарабатывает $9,000.00 в месяц, но желает $27,000.00
Chen зарабатывает $8,200.00 в месяц, но желает $24,600.00
Sciarra зарабатывает $7,700.00 в месяц, но желает $23,100.00
Urman зарабатывает $7,800.00 в месяц, но желает $23,400.00
Popp зарабатывает $6,900.00 в месяц, но желает $20,700.00
Raphaely зарабатывает $11,000.00 в месяц, но желает $33,000.00
Khoo зарабатывает $3,100.00 в месяц, но желает $9,300.00
Baida зарабатывает $2,900.00 в месяц, но желает $8,700.00
Tobias зарабатывает $2,800.00 в месяц, но желает $8,400.00
Himuro зарабатывает $2,600.00 в месяц, но желает $7,800.00
Colmenares зарабатывает $2,500.00 в месяц, но желает $7,500.00
107 rowsselected
…
Dream Salaries
King earns $24,000.00 monthly but wants $72,000.00
Kochhar earns $17,000.00 monthly but wants $51,000.00
De Haan earns $17,000.00 monthly but wants $51,000.00
Hunold earns $9,000.00 monthly but wants $27,000.00
Ernst earns $6,000.00 monthly but wants $18,000.00
Lorentz earns $4,200.00 monthly but wants $12,600.00
Mourgos earns $5,800.00 monthly but wants $17,400.00
Rajs earns $3,500.00 monthly but wants $10,500.00
Davies earns $3,100.00 monthly but wants $9,300.00
…………
20 rowsselected
2. Напишите запрос для вывода фамилий и окладов всех служащих. Назовите выходной столбец SALARY. Длина столбца SALARY – 15 символов с заполнением символом $.
LAST_NAME
SALARY
King
$$$$$$$$$$24000
Kochhar
$$$$$$$$$$17000
DeHaan
$$$$$$$$$$17000
Hunold
$$$$$$$$$$$9000
Ernst
$$$$$$$$$$$6000
Lorentz
$$$$$$$$$$$4200
Mourgos
$$$$$$$$$$$5800
Rajs
$$$$$$$$$$$3500
Davies
$$$$$$$$$$$3100
Matos
$$$$$$$$$$$2600
………………
20 rows selected
select last_name, lpad(salary,15,'$') salary from employees order by employee_id;
LAST_NAME
SALARY
King
$$$$$$$$$$24000
Kochhar
$$$$$$$$$$17000
De Haan
$$$$$$$$$$17000
Hunold
$$$$$$$$$$$9000
Ernst
$$$$$$$$$$$6000
Austin
$$$$$$$$$$$4800
Pataballa
$$$$$$$$$$$4800
Lorentz
$$$$$$$$$$$4200
Greenberg
$$$$$$$$$$12000
Faviet
$$$$$$$$$$$9000
Chen
$$$$$$$$$$$8200
Sciarra
$$$$$$$$$$$7700
Urman
$$$$$$$$$$$7800
Popp
$$$$$$$$$$$6900
Raphaely
$$$$$$$$$$11000
Khoo
$$$$$$$$$$$3100
Baida
$$$$$$$$$$$2900
Tobias
$$$$$$$$$$$2800
Himuro
$$$$$$$$$$$2600
107 rows selected
Для каждого служащего выведите фамилию, дату найма и дату пересмотра зарплаты, которая приходится на первый понедельник после 6 месяцев работы. Назовите столбец REVIEW. Формат даты при выводе имеет вид: “Monday, theThirty-FirstofMM, YYYY”.
По каждому служащему выведите фамилию, дату найма и день недели, когда он был нанят на работу. Назовите последний столбец DAY. Отсортируйте результаты по дням недели.
, to_char(hire_date,'DAY', 'NLS_DATE_LANGUAGE = AMERICAN') day from employees order by TO_CHAR(hire_date,'D');
LAST_NAME
hire_date
DAY
Mallin
14-JUN-04
MONDAY
Banda
21-APR-08
MONDAY
Ladwig
14-JUL-03
MONDAY
Vollman
10-OCT-05
MONDAY
Walsh
24-APR-06
MONDAY
Kumar
21-APR-08
MONDAY
Ernst
21-MAY-07
MONDAY
Ande
24-MAR-08
MONDAY
Greene
19-MAR-07
MONDAY
Cambrault
15-OCT-07
MONDAY
Olson
10-APR-07
TUESDAY
Urman
07-MAR-06
TUESDAY
Hunold
03-JAN-06
TUESDAY
King
17-JUN-03
TUESDAY
Feeney
23-MAY-06
TUESDAY
Hartstein
17-FEB-04
TUESDAY
Chen
28-SEP-05
WEDNESDAY
Gee
12-DEC-07
WEDNESDAY
Kochhar
21-SEP-05
WEDNESDAY
Cabrio
07-FEB-07
WEDNESDAY
Fay
17-AUG-05
WEDNESDAY
Bell
04-FEB-04
WEDNESDAY
Whalen
17-SEP-03
WEDNESDAY
Perkins
19-DEC-07
WEDNESDAY
107 rows selected
Напишите запрос для вывода фамилии и суммы комиссионных каждого служащего. Если служащий не зарабатывает комиссионных, укажите в столбце «NoCommission». Назовите столбец COMM.
LAST_NAME
COMM
King
NoCommission
Kochhar
NoCommission
De Haan
NoCommission
Hunold
NoCommission
Ernst
NoCommission
Lorentz
NoCommission
Mourgos
NoCommission
Rajs
NoCommission
Davies
NoCommission
Matos
NoCommission
Vargas
NoCommission
Zlotkey
.2
Abel
.3
…………….
20 rows selected select last_name, NVL(to_char(commission_pct,'fm.99'),'No Commission')COMM from employees order by employee_id;
LAST_NAME
COMM
King
No Commission
Kochhar
No Commission
De Haan
No Commission
Hunold
No Commission
Ernst
No Commission
Austin
No Commission
Pataballa
No Commission
Lorentz
No Commission
Greenberg
No Commission
Faviet
No Commission
Russell
.4
Partners
.3
Errazuriz
.3
Cambrault
.3
Zlotkey
.2
Tucker
.3
Bernstein
.25
Hall
.25
Olsen
.2
Cambrault
.2
Tuvault
.15
King
.35
Sully
.35
McEwen
.35
Smith
.3
Doran
.3
Sewall
.25
Vishney
.25
107 rows selected
Напишите запрос для отображения фамилий сотрудников и их заработной платы в виде гистограммы, состоящей из звёздочек. Каждая звёздочка означает 1000$. Строки должны быть отсортированы по заработной плате в убывающем порядке. Результат должен быть выведен одним столбцом, озаглавленным как EMPLOYEESANDTHEIRSALARIES.
EMPLOYEESANDTHEIRSALARIES
King************************
Kochhar*****************
De Haan*****************
Hartstein*************
Higgins************
Abel***********
………………….
20 rows selected select last_name||rpad('*',trunc(salary/1000),'*') "EMPLOYEES AND THEIR SALARIES" from employees order by salary desc;
EMPLOYEES AND THEIR SALARIES
King************************
Kochhar*****************
De Haan*****************
Russell**************
Partners*************
Hartstein*************
Higgins************
Greenberg************
Errazuriz************
Ozer***********
Cambrault***********
Abel***********
Raphaely***********
Vishney**********
Zlotkey**********
Bloom**********
King**********
Tucker**********
107 rows selected
Используя функцию DECODE, напишите запрос для отображения должности сотрудника и её разряда (grade). Разряд каждого типа должности JOB_ID приведён в таблице.
Должность
Разряд
AD_PRES
A
ST_MAN
B
IT_PROG
C
SA_REP
D
ST_CLERK
E
Другая
JOB_ID
G
AD_PRES
A
AD_VP
AD_VP
IT_PROG
C
IT_PROG
C
IT_PROG
C
ST_MAN
B
ST_CLERK
E
…………………..
20 rows selected
select job_id, decode(JOB_ID,'AD_PRES','A','ST_MAN','B','IT_PROG','C','SA_REP','D','ST_CLERK','E','0') G from employees;
JOB_ID
G
AC_ACCOUNT
AC_MGR
AD_ASST
AD_PRES
A
AD_VP
AD_VP
FI_ACCOUNT
FI_ACCOUNT
FI_ACCOUNT
FI_ACCOUNT
FI_ACCOUNT
FI_MGR
HR_REP
IT_PROG
C
IT_PROG
C
SA_REP
D
SA_REP
D
SA_REP
D
SA_REP
D
107 rows selected
Перепишите команду из предыдущего задания, используя синтаксис выражения CASE.
select job_id, case JOB_ID when 'AD_PRES'then'A' when 'ST_MAN' then 'B'when 'IT_PROG'then'C'when'SA_REP'then'D'when'ST_CLERK'then'E' else'0' end G from employees;