close

Вход

Забыли?

вход по аккаунту

код для вставкиСкачать
KOT.ITMO.RU
Помогли? Яндекс.Деньги 41001143976737
Санкт-Петербургский Государственный Университет Информационных Технологий, Механики и Оптики
Лабораторная работа № 4
Выборка данных из нескольких таблиц и агрегирование
данных с помощью групповых функций
студент гр. 3108
Проверил: Скшидлевский А. А.
Санкт-Петербург
KOT.ITMO.RU
Помогли? Яндекс.Деньги 41001143976737
2011
1. Используя данные из таблиц staff, jobs, departments и locations, напишите запрос, который возвращает имя,
фамилию, должность и зарплату сотрудника (оклад /jobs.salary/ + надбавка /staff.increase/), отдел в котором он
работает и его местонахождение. Причем вывести только тех сотрудников, у которых зарплата не превышает
установленного максимального оклада /jobs.salary_max/ для его должности. Необходимо учесть, что надбавка
может иметь значение null, если это так, то считать надбавку равной нулю. Зарплата должна быть выведена в
формате XXXXX.XXр. Местонахождение должно включать в себя название и описание, разделенные запятой.
select s.first_name AS "Имя",
s.last_name AS "Фамилия",
j.job_name AS "Должность",
TO_CHAR((j.salary + s.increase),'99999.99L') AS "Зарплата",
d.department_name AS "Отдел",
l.location_name ||', '|| l.description AS "Местонахождение"
from staff s, jobs j, departments d,locations l
Where j.salary_max > (j.salary + s.increase) and s.job_id = j.job_id and
d.location_id = l.location_id and s.department_id = d.department_id
ORDER BY "Зарплата" DESC;
2. Используя данные из таблиц staff и departments, напишите запрос, который возвращает названии отдела
/departments.department_name/, имя и фамилию сотрудника. При этом должна выводиться также информация о
тех отделах, для которых сотрудников в таблице departments нет. Информация должна быть упорядочена по
названиям отделов.
select d.department_name AS "Отдел",
s.first_name AS "Имя",
s.last_name AS "Фамилия"
from staff s, departments d
Where s.department_ID (+)= d.department_ID
Order By "Отдел";
KOT.ITMO.RU
Помогли? Яндекс.Деньги 41001143976737
3. Используя данные из таблиц staff и jobs, напишите запрос, который возвращает количество сотрудников,
минимальную, максимальную и среднюю зарплату (оклад /jobs.salary/ + надбавка /staff.increase/) сотрудников для
каждой должности. При этом выводить только те должности, для которых минимальная заплата не больше
25000р. Если надбавка не назначена (равняется null), считать её равной нулю. Зарплата должна быть выведена в
формате XXXXX.XXр. Записи отсортировать по должностям по возростанию.
select j.job_name AS "Должность",
Count (j.job_ID) AS "Кол-во сотрудн.",
TO_CHAR (MIN (j.salary + s.increase),'999999.99L') AS "Мин. зарплата",
TO_CHAR (MAX (j.salary + s.increase),'999999.99L') AS "Макс. зарплата",
TO_CHAR (AVG (j.salary + s.increase),'999999.99L') AS "Сред. зарплата"
from staff s,jobs j
Where s.job_ID = j.job_ID
Group By j.job_name
Having MIN (j.salary + s.increase) < 25000
Order By "Должность" ASC;
1/--страниц
Пожаловаться на содержимое документа