Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
blablabla.docx
Скачиваний:
2
Добавлен:
25.04.2019
Размер:
326.2 Кб
Скачать

Лабораторная работа 3

  • Составление запроса для вывода текущей даты.

  • Составление запросов, требующих использования числовых, символьных функций и функций для работы с датами.

  • Вычисление продолжительности работы служащего в месяцах и годах.

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

DATE

08-MAR-01

select to_char(sysdate, 'DD-MM-YYYY ') as "Current Time" from dual;

  1. Выведите номер служащего, его фамилию, оклад и новый оклад, повышенный на 15% и округлённый до целого. Назовите столбец New Salary. Сохраните команду SQL в текстовом файле lab3_2sql.

  2. Выполните запрос из файла lab3_2sql.

  1. EMPLOYEE_ID

  1. LAST_NAME

  1. SALARY

  1. New Salary

  1. 100

  1. King

  1. 24000

  1. 27600

  1. 101

  1. Kochhar

  1. 17000

  1. 19550

  1. 102

  1. De Haan

  1. 17000

  1. 19550

  1. 103

  1. Hunold

  1. 9000

  1. 10350

  1. 104

  1. Ernst

  1. 6000

  1. 6900

  1. SELECT EMPLOYEE_ID,LAST_NAME,SALARY,round(SALARY + (.15 * SALARY)) as "New Salary" FROM employees

  1. Измените lab3_2.sql. добавьте ещё один столбец, который будет содержать результат вычитания старого оклада из нового. Назовите столбец Increase. Сохраните изменённый запрос в lab3_4.sql. Выполните запрос ещё раз.

  1. EMPLOYEE_ID

  1. LAST_NAME

  1. SALARY

  1. New Salary

  1. Increase

  1. 100

  1. King

  1. 24000

  1. 27600

  1. 3600

  1. 101

  1. Kochhar

  1. 17000

  1. 19550

  1. 2550

  1. 102

  1. De Haan

  1. 17000

  1. 19550

  1. 2550

  1. 103

  1. Hunold

  1. 9000

  1. 10350

  1. 1350

  1. 104

  1. Ernst

  1. 6000

  1. 6900

  1. 900

  1. SELECT EMPLOYEE_ID,LAST_NAME,SALARY,round(SALARY + (.15 * SALARY))as "New Salary",round(.15 * salary) as "Increase" FROM employees

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

  1. Name

  1. Lenght

  1. Abel

  1. 4

  1. Matos

  1. 5

  1. Mourgos

  1. 7

  1. select last_name as "Name",length(last_name)as "Length" from employees

  2. where last_name like 'A%' or last_name like 'J%' or last_name like 'M%'

  3. Лабораторная работа 4

  • Составление запросов, требующих использования числовых, символьных функций и функций для работы с датами.

  • Использование конкатенации с функциями.

  • Составление запросов, нечувствительных к регистру символов, для проверки полезности символьных функций.

  • Вычисление продолжительности работы служащего в месяцах и годах.

  • Определение даты аттестации служащего.

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

  1. LAST_NAME

  1. MONTH_WORKED

  1. Zlotkey

  1. 13

  1. Mourgos

  1. 16

  1. Grant

  1. 22

  1. Lorentz

  1. 25

  1. Vargas

  1. 32

  1. Taylor

  1. 36

  1. Matos

  1. 36

  1. Fay

  1. 43

  1. select last_name,trunc(months_between(sysdate,hire_date)) as MONTH_WORKED from employees Order by month_worked

  1. Получите по каждому служащему отчёт в следующем виде: <фамилия> зарабатывает <оклад> в месяц, но желает <утроенный оклад>. Назовите столбец Dream Salaries

  1. Dream Salaries

  1. King earns $24,000.00 monthly but wants $72,000.00

  1. Kochhar earns $17,000.00 monthly but wants $51,000.00

  1. De Haan earns $17,000.00 monthly but wants $51,000.00

  1. Hunold earns $9,000.00 monthly but wants $27,000.00

  1. Ernst earns $6,000.00 monthly but wants $18,000.00

  1. Lorentz earns $4,200.00 monthly but wants $12,600.00

  1. Mourgos earns $5,800.00 monthly but wants $17,400.00

  1. Rajs earns $3,500.00 monthly but wants $10,500.00

  1. Davies earns $3,100.00 monthly but wants $9,300.00

  1. select concat(last_name,' earns $' , salary, ' monthly but wants $', salary * 3 ) as "Dream Salaries" from EMPLOYEES

  1. Напишите запрос для вывода фамилий и окладов всех служащих. Назовите выходной столбец SALARY. Длина столбца SALARY – 15 символов с заполнением символом $.

  1. LAST_NAME

  1. SALARY

  1. King

  1. $$$$$$$$$$24000

  1. Kochhar

  1. $$$$$$$$$$17000

  1. De Haan

  1. $$$$$$$$$$17000

  1. Hunold

  1. $$$$$$$$$$$9000

  1. Ernst

  1. $$$$$$$$$$$6000

  1. Lorentz

  1. $$$$$$$$$$$4200

  1. Mourgos

  1. $$$$$$$$$$$5800

  1. Rajs

  1. $$$$$$$$$$$3500

  1. Davies

  1. $$$$$$$$$$$3100

  1. Matos

  1. $$$$$$$$$$$2600

  1. select last_name , lpad(salary,15,'$') as salary from EMPLOYEES

  1. Для каждого служащего выведите фамилию, дату найма и дату пересмотра зарплаты, которая приходится на первый понедельник после 6 месяцев работы. Назовите столбец REVIEW. Формат даты при выводе имеет вид: “Monday, the Thirty-First of MM, YYYY”.

  1. LAST_NAME

  1. HIRE_DATE

  1. REVIEW

  1. King

  1. 17-JUN-87

  1. Monday, the Thirty-First of December, 1987

  1. Kochhar

  1. 21-SEP-89

  1. Monday, the Thirty-Sixth of March, 1990

  1. De Haan

  1. 13-JAN-93

  1. Monday, the Nineteenth of July, 1993

  1. Hunold

  1. 03-JAN-90

  1. Monday, the Ninth of July, 1990

  1. select last_name,hire_date, to_char((next_day(add_months(hire_date,6),1)),'Day,"the" DDspth "of" MM,YYYY') as "review" from employees

  1. По каждому служащему выведите фамилию, дату найма и день недели, когда он был нанят на работу. Назовите последний столбец DAY. Отсортируйте результаты по датам.

  1. LAST_NAME

  1. HIRE_DATE

  1. DAY

  1. Grant

  1. 24-MAY-99

  1. MONDAY

  1. Ernst

  1. 21-MAY-91

  1. TUESDAY

  1. Mourgos

  1. 16-NOV-99

  1. TUESDAY

  1. Taylor

  1. 24-MAR-98

  1. TUESDAY

  1. Rajs

  1. 17-OCT-95

  1. TUESDAY

  1. Gietz

  1. 07-JUN-94

  1. TUESDAY

  1. Higgins

  1. 07-JUN-94

  1. TUESDAY

  1. King

  1. 17-JUN-87

  1. WEDNESDAY

  1. De Haan

  1. 13-JAN-93

  1. WEDNESDAY

  1. SELECT last_name,hire_date,to_char(hire_date, 'Dy')as 'Day' from employees ORDER BY to_char(hire_date, 'D')

  1. Напишите запрос для вывода фамилии и суммы комиссионных каждого служащего. Если служащий не зарабатывает комиссионных, укажите в столбце «No Commission». Назовите столбец COMM.

  1. LAST_NAME

  1. COMM

  1. King

  1. No Commission

  1. Kochhar

  1. No Commission

  1. De Haan

  1. No Commission

  1. Hunold

  1. No Commission

  1. Ernst

  1. No Commission

  1. Lorentz

  1. No Commission

  1. Mourgos

  1. No Commission

  1. Rajs

  1. No Commission

  1. Davies

  1. No Commission

  1. Matos

  1. No Commission

  1. Vargas

  1. No Commission

  1. Zlotkey

  1. .2

  1. Abel

  1. .3

  1. select last_name,replace(nvl(commission_pct,1),1,'No Commission') as "COMM"

  2. from employees

  1. Используя функцию DECODE, напишите запрос для отображения должности сотрудника и её разряда (grade). Разряд каждого типа должности JOB_ID приведён в таблице.

  1. Должность

  1. Разряд

  1. AD_PRES

  1. A

  1. ST_MAN

  1. B

  1. IT_PROG

  1. C

  1. SA_REP

  1. D

  1. ST_CLERK

  1. E

  1. Другая

  1. 0

    1. JOB_ID

    1. G

    1. AD_PRES

    1. A

    1. AD_VP

    1. 0

    1. AD_VP

    1. 0

    1. IT_PROG

    1. C

    1. IT_PROG

    1. C

    1. IT_PROG

    1. C

    1. ST_MAN

    1. B

    1. ST_CLERK

    1. E

  1. SELECT distinct job_id,decode(job_id,'AD_PRES','a','ST_MAN','b','IT_PROG','c','SA_REP','d','ST_CLERK','e','0') as "G"

  2. FROM employees

  3. order by job_id

  1. Перепешите команду из предыдущего задания, используя синтаксис выражения CASE. SELECT distinct job_id ,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]