Практическое занятие 3

1. Напишите запрос для вывода текущей даты. Назовите столбец Date

SELECT sysdate as "Date"
FROM dual;


Date
-------------------------------
06-JUL-16

2. Отделу HR требуется отчет, в котором приводится номер служащего, его фамилия, оклад и новый оклад, повышенный на 15.5% и округленный до целого. Столбец в отчете, содержащий новый оклад, должен иметь имя New Salary.

SELECT EMPLOYEE_ID, LAST_NAME, SALARY, TRUNC(salary + (salary * 15.5 / 100 ), 0) as "New Salary"
FROM employees;


EMPLOYEE_ID LAST_NAME                     SALARY New Salary
----------- ------------------------- ---------- ----------
        100 King                         24000.9      27721
        101 Kochhar                        17000      19635
        102 De Haan                        17000      19635
        103 Hunold                          9000      10395

        ***

        203 Mavris                          6500       7507
        204 Baer                           10000      11550
        205 Higgins                        12008      13869
        206 Gietz                         998300    1153036

 107 rows selected

4. Добавьте еще один столбец, который будет содержать результат вычитания старого оклада из нового. Назовите столбец Increase.

SELECT EMPLOYEE_ID, LAST_NAME, SALARY, TRUNC(salary + (salary * 15.5 / 100 ), 0) as "New Salary", TRUNC((TRUNC(salary + (salary * 15.5 / 100 ), 0) - salary), 0) as "Increase"
FROM employees;


EMPLOYEE_ID LAST_NAME SALARY New Salary Increase


    100 King                         24000.9      27721       3720
    101 Kochhar                        17000      19635       2635
    102 De Haan                        17000      19635       2635
    103 Hunold                          9000      10395       1395

    ***

    204 Baer                           10000      11550       1550
    205 Higgins                        12008      13869       1861
    206 Gietz                         998300    1153036     154736

107 rows selected


5. Выведите фамилии служащих (первая буква каждой фамилии должна быть заглавной, а остальные - строчными) и длину каждой фамилии для тех служащих, фамилия которых начинается с символа J, A или M. Присвойте соответствующие заголовки столбцам. Отсортируйте результат по фамилиям служащих.

SELECT INITCAP(LAST_NAME) as "Last Name", LENGTH(LAST_NAME) as "Length"
FROM employees
WHERE INSTR(last_name, 'A') = 1
OR INSTR(last_name, 'M') = 1
OR INSTR(last_name, 'J') = 1
ORDER BY LAST_NAME;


Last Name                     Length
------------------------- ----------
Abel                               4
Ande                               4
Atkinson                           8
Austin                             6
Johnson                            7
Jones                              5
Mallin                             6
Markle                             6
Marlow                             6
Marvins                            7
Matos                              5
Mavris                             6
Mccain                             6
Mcewen                             6
Mikkilineni                       11
Mourgos                            7

 16 rows selected


6. Отделу HR необходимы сведения о продолжительности работы служащих. Для каждого служащего выведите фамилию и вычислите количество месяцев со дня найма до настоящего времени, округленное до ближайшего целого. Назовите столбец MONTHS_WORKED. Результаты отсортируйте по количеству отработанных месяцев.

SELECT LAST_NAME as "Last Name", ROUND(MONTHS_BETWEEN(sysdate, HIRE_DATE)) as "MONTHS_WORKED"
FROM employees
ORDER BY MONTHS_WORKED DESC;


Last Name                                           MONTHS_WORKED
------------------------- ---------------------------------------
De Haan                                                       186
Higgins                                                       169
Gietz                                                         169
Mavris                                                        169
Baer                                                          169

***

Marvins                                                       101
Lee                                                           100
Markle                                                        100
Ande                                                           99
Kumar                                                          99
Banda                                                          99

 107 rows selected

7. Создайте запрос, показывающий фамилию и зарплату сотрудников. Назовите выходной столбец SALARY. Длина столбца SALARY – 15 символов с дополненными слева символами $.

ХЗ как делать.

TODO:

8. Напишите запрос для отображения первых восьми букв фамилий сотрудников и их заработной платы в виде гистограммы, состоящей из звездочек. Каждая звездочка означает 1000$. Строки должны быть отсортированы по заработной плате в убывающем порядке. Результат должен быть выведен одним столбцом, озаглавленным как EMPLOYEES_AND_THEIR_SALARIES.

TODO:

9. Напишите запрос для отображения фамилии сотрудников отдела №90 и количества недель, которые каждый сотрудник проработал в компании. Назовите этот столбец TENURE. Значение необходимо урезать до целого. Отсортируйте записи по столбцу tenure.

SELECT LAST_NAME as "Last Name", (TRUNC((sysdate - HIRE_DATE) / 7)) as "TENURE"
FROM employees
WHERE DEPARTMENT_ID = 90
ORDER BY "TENURE" DESC;


Last Name                     TENURE
------------------------- ----------
De Haan                          807
King                             681
Kochhar                          563