Практическое занятие 2
Отделу HR необходима помощь в создании некоторых запросов
1. Вследствие проблем финансирования отделу HR необходим отчет, в котором показываются фамилии и оклады служащих, получающих более $12,000.
SELECT last_name, salary
FROM employees
WHERE salary > 12000;
LAST_NAME SALARY
------------------------- ----------
King 24000.9
Kochhar 17000
De Haan 17000
Greenberg 12008
Russell 14000
Partners 13500
Hartstein 13000
Higgins 12008
Gietz 998300
9 rows selected
Создайте запрос для вывода фамилии и номера отдела служащего под номером 176
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
LAST_NAME DEPARTMENT_ID
------------------------- -------------
Taylor 80
Отделу HR необходимы данные о высокооплачиваемых и низкооплачиваемых сотрудниках. Выведите фамилии и оклады всех служащих, чей оклад не входит в диапазон от $5000 до $12000.
SELECT last_name, salary
FROM employees
WHERE
salary < 5000
or salary > 21000;
LAST_NAME SALARY
------------------------- ----------
King 24000.9
Austin 4800
Pataballa 4800
Lorentz 4200
Khoo 3100
Baida 2900
Tobias 2800
Himuro 2600
Colmenares 2500
Nayer 3200
Mikkilineni 2700
Landry 2400
Markle 2200
Bissot 3300
Atkinson 2800
Marlow 2500
Olson 2100
Mallin 3300
Rogers 2900
Gee 2400
Philtanker 2200
Ladwig 3600
Stiles 3200
Seo 2700
Patel 2500
Rajs 3500
Davies 3100
Matos 2600
Vargas 2500
Taylor 3200
Fleaur 3100
Sullivan 2500
Geoni 2800
Sarchand 4200
Bull 4100
Dellinger 3400
Cabrio 3000
Chung 3800
Dilly 3600
Gates 2900
Perkins 2500
Bell 4000
Everett 3900
McCain 3200
Jones 2800
Walsh 3100
Feeney 3000
OConnell 2600
Grant 2600
Whalen 4400
Gietz 998300
51 rows selected
Создайте отчет для вывода фамилии, идентификатора должности и даты начала работы всех служащих, с фамилиями Matos и Taylor. Отсортируйте данные в порядке возрастания даты найма.
SELECT last_name, job_id, hire_date
FROM employees
WHERE last_name = 'Matos' OR last_name = 'Taylor'
ORDER BY hire_date ASC;
LAST_NAME JOB_ID HIRE_DATE
------------------------- ---------- -------------------------------
Taylor SH_CLERK 24-JAN-06
Matos ST_CLERK 15-MAR-06
Taylor SA_REP 24-MAR-06
Выведите фамилию и номер отдела всех служащих из отделов 20 и 50. Отсортируйте данные по фамилиям в алфавитном порядке.
SELECT last_name, department_id
FROM employees
WHERE department_id in (20, 50)
ORDER BY last_name;
LAST_NAME DEPARTMENT_ID
------------------------- -------------
Atkinson 50
Bell 50
Bissot 50
Bull 50
Cabrio 50
Chung 50
Davies 50
Dellinger 50
Dilly 50
Everett 50
Fay 20
Feeney 50
Fleaur 50
Fripp 50
Gates 50
Gee 50
Geoni 50
Grant 50
Hartstein 20
Jones 50
Kaufling 50
Ladwig 50
Landry 50
Mallin 50
Markle 50
Marlow 50
Matos 50
McCain 50
Mikkilineni 50
Mourgos 50
Nayer 50
OConnell 50
Olson 50
Patel 50
Perkins 50
Philtanker 50
Rajs 50
Rogers 50
Sarchand 50
Seo 50
Stiles 50
Sullivan 50
Taylor 50
Vargas 50
Vollman 50
Walsh 50
Weissgbgg 50
47 rows selected
Вывести фамилии и оклады служащих отделов 20 и 50, зарабатывающих от $5000 до $12,000. Назовите столбцы Employee и Monthly Salary, соответственно.
SELECT last_name as Employee, salary as "Monthly Salary"
FROM employees
WHERE 1=1
and department_id in (20, 50)
and (salary >= 5000 and salary <= 12000);
EMPLOYEE Monthly Sa
------------------------- ----------
Weissgbgg 8000
Fripp 8200
Kaufling 7900
Vollman 6500
Mourgos 5800
Fay 6000
6 rows selected
Отделу HR необходим отчет, в котором выводятся фамилии и даты найма всех служащих, нанятых в 2004 г
SELECT last_name, hire_date
FROM employees
WHERE hire_date
BETWEEN TO_DATE ('01.01.2004', 'dd.mm.yyyy')
AND TO_DATE ('31.12.2004', 'dd.mm.yyyy');
LAST_NAME HIRE_DATE
------------------------- -------------------------------
Weissgbgg 18-JUL-04
Mallin 14-JUN-04
Russell 01-OCT-04
King 30-JAN-04
Sully 04-MAR-04
McEwen 01-AUG-04
Abel 11-MAY-04
Sarchand 27-JAN-04
Bell 04-FEB-04
Hartstein 17-FEB-04
10 rows selected
Создайте отчет, содержащий фамилии и должности всех служащих, не имеющих менеджера.
SELECT last_name, job_id
FROM employees
WHERE manager_id is null;
LAST_NAME JOB_ID
------------------------- ----------
King AD_PRES
Создайте отчет для вывода фамилий, окладов и комиссионные всех служащих, зарабатывающих комиссионные. Отсортируйте данные в порядке убывания окладов и комиссионных.
SELECT last_name, salary, COMMISSION_PCT
FROM employees
WHERE COMMISSION_PCT is not null
ORDER BY salary desc, COMMISSION_PCT desc;
LAST_NAME SALARY COMMISSION_PCT
------------------------- ---------- --------------
Russell 14000 .4
Partners 13500 .3
Errazuriz 12000 .3
Ozer 11500 .25
Cambrault 11000 .3
Abel 11000 .3
Vishney 10500 .25
Zlotkey 10500 .2
King 10000 .35
Tucker 10000 .3
Bloom 10000 .2
Fox 9600 .2
Sully 9500 .35
Bernstein 9500 .25
Greene 9500 .15
McEwen 9000 .35
Hall 9000 .25
Hutton 8800 .25
Taylor 8600 .2
Livingston 8400 .2
Smith 8000 .3
Olsen 8000 .2
Doran 7500 .3
Cambrault 7500 .2
Smith 7400 .15
Bates 7300 .15
Marvins 7200 .1
Sewall 7000 .25
Tuvault 7000 .15
Grant 7000 .15
Lee 6800 .1
Ande 6400 .1
Banda 6200 .1
Johnson 6200 .1
Kumar 6100 .1
35 rows selected
Сотрудникам отдела HR требуются запросы с более гибкими возможностями. Так необходим отчет, в котором показываются фамилии и оклады служащих, зарабатывающих больше некоторой величины, вводимой пользователем после приглашения. (Можете изменить запрос, созданный при выполнении задания 1.) Запишите запрос в файл lab_02_10.sql. Ниже приводятся результаты, которые получаются, когда после приглашения вводится 12000
Впадлу делать такие запросы. Реально мне никогда такого рода функционал не был нужен.
Отделу HR необходимы отчеты по каждому менеджеру. Создайте отчет, при выполнении которого запрашивается идентификатор менеджера (manager_ID) и выводятся следующие сведения о подчиняющихся ему сотрудниках: табельный номер, фамилия и номер отдела. Должна быть предоставлена возможность отсортировать результаты на основе заданного столбца.
Впадлу делать такие запросы. Реально мне никогда такого рода функционал не был нужен.
Выведите все фамилии служащих, в которых третья буква – a
SELECT last_name
FROM employees
WHERE instr(last_name, 'a') = 3;
LAST_NAME
-------------------------
Grant
Grant
Whalen
Выведите все фамилии служащих, в которых есть буквы “a” и “e”.
SELECT last_name
FROM employees
WHERE instr(last_name, 'a') != 0 OR instr(last_name, 'e') != 0
LAST_NAME
-------------------------
Abel
Ande
Baer
Baida
Banda
Bates
Bell
Bernstein
Cabrio
Cambrault
Cambrault
Chen
Colmenares
Davies
De Haan
Dellinger
Doran
Errazuriz
Everett
Faviet
Fay
Feeney
Fleaur
Gates
Gee
Geoni
Gietz
Grant
Grant
Greenberg
Greene
Hall
Hartstein
Jones
Kaufling
Kochhar
Kumar
Ladwig
Landry
Lee
Lorentz
Mallin
Markle
Marlow
Marvins
Matos
Mavris
McCain
McEwen
Mikkilineni
Nayer
OConnell
Olsen
Ozer
Partners
Pataballa
Patel
Perkins
Philtanker
Rajs
Raphaely
Rogers
Russell
Sarchand
Sciarra
Seo
Sewall
Stiles
Sullivan
Taylor
Taylor
Tobias
Tucker
Tuvault
Urman
Vargas
Vishney
Vollman
Walsh
Weissgbgg
Whalen
Zlotkey
82 rows selected
Запросите фамилии, должности и оклады всех служащих, работающих торговыми представителя (SA_REP) или клерками на складе (ST_CLERK), у которых оклад не может быть равен $2500, $3500 или $7000.
SELECT last_name, job_id, salary
FROM employees
WHERE job_id in ('SA_REP', 'ST_CLERK')
and salary not in (2500, 3500, 7000)
LAST_NAME JOB_ID SALARY
------------------------- ---------- ----------
Nayer ST_CLERK 3200
Mikkilineni ST_CLERK 2700
Landry ST_CLERK 2400
Markle ST_CLERK 2200
Bissot ST_CLERK 3300
Atkinson ST_CLERK 2800
Olson ST_CLERK 2100
Mallin ST_CLERK 3300
Rogers ST_CLERK 2900
Gee ST_CLERK 2400
Philtanker ST_CLERK 2200
Ladwig ST_CLERK 3600
Stiles ST_CLERK 3200
Seo ST_CLERK 2700
Davies ST_CLERK 3100
Matos ST_CLERK 2600
Tucker SA_REP 10000
Bernstein SA_REP 9500
Hall SA_REP 9000
Olsen SA_REP 8000
Cambrault SA_REP 7500
King SA_REP 10000
Sully SA_REP 9500
McEwen SA_REP 9000
Smith SA_REP 8000
Doran SA_REP 7500
Vishney SA_REP 10500
Greene SA_REP 9500
Marvins SA_REP 7200
Lee SA_REP 6800
Ande SA_REP 6400
Banda SA_REP 6200
Ozer SA_REP 11500
Bloom SA_REP 10000
Fox SA_REP 9600
Smith SA_REP 7400
Bates SA_REP 7300
Kumar SA_REP 6100
Abel SA_REP 11000
Hutton SA_REP 8800
Taylor SA_REP 8600
Livingston SA_REP 8400
Johnson SA_REP 6200
43 rows selected
Получить фамилии, оклады и комиссионные всех служащих, у которых комиссионные составляют 20%
SELECT last_name, salary, COMMISSION_PCT
FROM employees
WHERE COMMISSION_PCT = 0.2;
LAST_NAME SALARY COMMISSION_PCT
------------------------- ---------- --------------
Zlotkey 10500 .2
Olsen 8000 .2
Cambrault 7500 .2
Bloom 10000 .2
Fox 9600 .2
Taylor 8600 .2
Livingston 8400 .2
7 rows selected