Практическое занятие 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