Практическое занятие 1
Вас приняли на работу программистом на языке SQL в Acme Corporation. Ваше первое задание состоит в создании отчетов на основе данных из таблиц схемы Human Resources (“Персонал”, HR).
1. Ваше первое задание – выяснить структуру таблицы DEPARTMENTS и вывести ее содержимое.
DESCRIBE departments;
Name Null Type
--------------- -------- ------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
Чтобы не было повторяющегося блока в заголовке, указываю, что на одной странице помещается 1024 записи. Цифра не имеет принципиального значения, но мне нравится 1024.
SET PAGES 1024;
SELECT *
FROM departments;
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
10 Administration 200 1700
20 Marketing 201 1800
30 Purchasing 114 1700
40 Human Resources 203 2400
50 Shipping 121 1500
60 IT 103 1400
70 Public Relations 204 2700
80 Sales 145 2500
90 Executive 100 1700
100 Finance 108 1700
110 Accounting 205 1700
120 Treasury 1700
130 Corporate Tax 1700
140 Control And Credit 1700
150 Shareholder Services 1700
160 Benefits 1700
170 Manufacturing 1700
180 Construction 1700
190 Contracting 1700
200 Operations 1700
210 IT Support 1700
220 NOC 1700
230 IT Helpdesk 1700
240 Government Sales 1700
250 Retail Sales 1700
260 Recruiting 1700
270 Payroll 1700
9 New 200 1700
28 rows selected
2. Вам необходимо выяснить структуру таблицы EMPLOYEES
DESCRIBE employees;
Name Null Type
-------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT *
FROM employees;
3. Отделу по работе с персоналом (Human Resources, HR) необходимы данные, включающие фамилию, код должности, дату найма и табельный номер для каждого служащего. Табельный номер должен выводиться первым. Определите псевдоним STARTDATE для столбца HIRE_DATE.
SELECT employee_id, last_name, job_id, hire_date as STARTDATE
FROM employees;
EMPLOYEE_ID LAST_NAME JOB_ID STARTDATE
----------- ------------------------- ---------- -------------------------------
100 King AD_PRES 17-JUN-03
101 Kochhar AD_VP 21-SEP-05
102 De Haan AD_VP 13-JAN-01
103 Hunold IT_PROG 03-JAN-06
104 Ernst IT_PROG 21-MAY-07
105 Austin IT_PROG 25-JUN-05
106 Pataballa IT_PROG 05-FEB-06
107 Lorentz IT_PROG 07-FEB-07
108 Greenberg FI_MGR 17-AUG-02
109 Faviet FI_ACCOUNT 16-AUG-02
110 Chen FI_ACCOUNT 28-SEP-05
111 Sciarra FI_ACCOUNT 30-SEP-05
112 Urman FI_ACCOUNT 07-MAR-06
113 Popp FI_ACCOUNT 07-DEC-07
114 Raphaely PU_MAN 07-DEC-02
115 Khoo PU_CLERK 18-MAY-03
116 Baida PU_CLERK 24-DEC-05
117 Tobias PU_CLERK 24-JUL-05
118 Himuro PU_CLERK 15-NOV-06
119 Colmenares PU_CLERK 10-AUG-07
120 Weissgbgg ST_MAN 18-JUL-04
121 Fripp ST_MAN 10-APR-05
122 Kaufling ST_MAN 01-MAY-03
123 Vollman ST_MAN 10-OCT-05
124 Mourgos ST_MAN 16-NOV-07
125 Nayer ST_CLERK 16-JUL-05
126 Mikkilineni ST_CLERK 28-SEP-06
127 Landry ST_CLERK 14-JAN-07
128 Markle ST_CLERK 08-MAR-08
129 Bissot ST_CLERK 20-AUG-05
130 Atkinson ST_CLERK 30-OCT-05
131 Marlow ST_CLERK 16-FEB-05
132 Olson ST_CLERK 10-APR-07
133 Mallin ST_CLERK 14-JUN-04
134 Rogers ST_CLERK 26-AUG-06
135 Gee ST_CLERK 12-DEC-07
136 Philtanker ST_CLERK 06-FEB-08
137 Ladwig ST_CLERK 14-JUL-03
138 Stiles ST_CLERK 26-OCT-05
139 Seo ST_CLERK 12-FEB-06
140 Patel ST_CLERK 06-APR-06
141 Rajs ST_CLERK 17-OCT-03
142 Davies ST_CLERK 29-JAN-05
143 Matos ST_CLERK 15-MAR-06
144 Vargas ST_CLERK 09-JUL-06
145 Russell SA_MAN 01-OCT-04
146 Partners SA_MAN 05-JAN-05
147 Errazuriz SA_MAN 10-MAR-05
148 Cambrault SA_MAN 15-OCT-07
149 Zlotkey SA_MAN 29-JAN-08
150 Tucker SA_REP 30-JAN-05
151 Bernstein SA_REP 24-MAR-05
152 Hall SA_REP 20-AUG-05
153 Olsen SA_REP 30-MAR-06
154 Cambrault SA_REP 09-DEC-06
155 Tuvault SA_REP 23-NOV-07
156 King SA_REP 30-JAN-04
157 Sully SA_REP 04-MAR-04
158 McEwen SA_REP 01-AUG-04
159 Smith SA_REP 10-MAR-05
160 Doran SA_REP 15-DEC-05
161 Sewall SA_REP 03-NOV-06
162 Vishney SA_REP 11-NOV-05
163 Greene SA_REP 19-MAR-07
164 Marvins SA_REP 24-JAN-08
165 Lee SA_REP 23-FEB-08
166 Ande SA_REP 24-MAR-08
167 Banda SA_REP 21-APR-08
168 Ozer SA_REP 11-MAR-05
169 Bloom SA_REP 23-MAR-06
170 Fox SA_REP 24-JAN-06
171 Smith SA_REP 23-FEB-07
172 Bates SA_REP 24-MAR-07
173 Kumar SA_REP 21-APR-08
174 Abel SA_REP 11-MAY-04
175 Hutton SA_REP 19-MAR-05
176 Taylor SA_REP 24-MAR-06
177 Livingston SA_REP 23-APR-06
178 Grant SA_REP 24-MAY-07
179 Johnson SA_REP 04-JAN-08
180 Taylor SH_CLERK 24-JAN-06
181 Fleaur SH_CLERK 23-FEB-06
182 Sullivan SH_CLERK 21-JUN-07
183 Geoni SH_CLERK 03-FEB-08
184 Sarchand SH_CLERK 27-JAN-04
185 Bull SH_CLERK 20-FEB-05
186 Dellinger SH_CLERK 24-JUN-06
187 Cabrio SH_CLERK 07-FEB-07
188 Chung SH_CLERK 14-JUN-05
189 Dilly SH_CLERK 13-AUG-05
190 Gates SH_CLERK 11-JUL-06
191 Perkins SH_CLERK 19-DEC-07
192 Bell SH_CLERK 04-FEB-04
193 Everett SH_CLERK 03-MAR-05
194 McCain SH_CLERK 01-JUL-06
195 Jones SH_CLERK 17-MAR-07
196 Walsh SH_CLERK 24-APR-06
197 Feeney SH_CLERK 23-MAY-06
198 OConnell SH_CLERK 21-JUN-07
199 Grant SH_CLERK 13-JAN-08
200 Whalen PU_CLERK 17-SEP-03
201 Hartstein MK_MAN 17-FEB-04
202 Fay MK_REP 17-AUG-05
203 Mavris HR_REP 07-JUN-02
204 Baer PR_REP 07-JUN-02
205 Higgins AC_MGR 07-JUN-02
206 Gietz AC_ACCOUNT 07-JUN-02
107 rows selected
4. Отдел по работе с персоналом запрашивает данные о всех уникальных должностях из таблицы EMPLOYEES. В выводимых результатах идентификаторы должностей не должны повторяться.
SELECT distinct job_id
FROM employees;
JOB_ID
----------
AC_ACCOUNT
AC_MGR
AD_PRES
AD_VP
FI_ACCOUNT
FI_MGR
HR_REP
IT_PROG
MK_MAN
MK_REP
PR_REP
PU_CLERK
PU_MAN
SA_MAN
SA_REP
SH_CLERK
ST_CLERK
ST_MAN
18 rows selected
5. Отделу HR необходим отчет о всех сотрудниках и идентификаторах их должностей. Выведите на экран имя сотрудника, соединенное с идентификатором должности через запятую и пробел. Назовите новый столбец Employee and Title
SELECT last_name || ', ' ||job_id as "Employee and Title"
FROM employees;
Employee and Title
-------------------------------------
Abel, SA_REP
Ande, SA_REP
Atkinson, ST_CLERK
Austin, IT_PROG
Baer, PR_REP
Baida, PU_CLERK
Banda, SA_REP
Bates, SA_REP
Bell, SH_CLERK
Bernstein, SA_REP
Bissot, ST_CLERK
Bloom, SA_REP
Bull, SH_CLERK
Cabrio, SH_CLERK
Cambrault, SA_MAN
Cambrault, SA_REP
Chen, FI_ACCOUNT
Chung, SH_CLERK
Colmenares, PU_CLERK
Davies, ST_CLERK
De Haan, AD_VP
Dellinger, SH_CLERK
Dilly, SH_CLERK
Doran, SA_REP
Ernst, IT_PROG
Errazuriz, SA_MAN
Everett, SH_CLERK
Faviet, FI_ACCOUNT
Fay, MK_REP
Feeney, SH_CLERK
Fleaur, SH_CLERK
Fox, SA_REP
Fripp, ST_MAN
Gates, SH_CLERK
Gee, ST_CLERK
Geoni, SH_CLERK
Gietz, AC_ACCOUNT
Grant, SH_CLERK
Grant, SA_REP
Greenberg, FI_MGR
Greene, SA_REP
Hall, SA_REP
Hartstein, MK_MAN
Higgins, AC_MGR
Himuro, PU_CLERK
Hunold, IT_PROG
Hutton, SA_REP
Johnson, SA_REP
Jones, SH_CLERK
Kaufling, ST_MAN
Khoo, PU_CLERK
King, SA_REP
King, AD_PRES
Kochhar, AD_VP
Kumar, SA_REP
Ladwig, ST_CLERK
Landry, ST_CLERK
Lee, SA_REP
Livingston, SA_REP
Lorentz, IT_PROG
Mallin, ST_CLERK
Markle, ST_CLERK
Marlow, ST_CLERK
Marvins, SA_REP
Matos, ST_CLERK
Mavris, HR_REP
McCain, SH_CLERK
McEwen, SA_REP
Mikkilineni, ST_CLERK
Mourgos, ST_MAN
Nayer, ST_CLERK
OConnell, SH_CLERK
Olsen, SA_REP
Olson, ST_CLERK
Ozer, SA_REP
Partners, SA_MAN
Pataballa, IT_PROG
Patel, ST_CLERK
Perkins, SH_CLERK
Philtanker, ST_CLERK
Popp, FI_ACCOUNT
Rajs, ST_CLERK
Raphaely, PU_MAN
Rogers, ST_CLERK
Russell, SA_MAN
Sarchand, SH_CLERK
Sciarra, FI_ACCOUNT
Seo, ST_CLERK
Sewall, SA_REP
Smith, SA_REP
Smith, SA_REP
Stiles, ST_CLERK
Sullivan, SH_CLERK
Sully, SA_REP
Taylor, SA_REP
Taylor, SH_CLERK
Tobias, PU_CLERK
Tucker, SA_REP
Tuvault, SA_REP
Urman, FI_ACCOUNT
Vargas, ST_CLERK
Vishney, SA_REP
Vollman, ST_MAN
Walsh, SH_CLERK
Weissgbgg, ST_MAN
Whalen, PU_CLERK
Zlotkey, SA_MAN
107 rows selected