4.3. Вариант 3
1) Сколько дней в неделю проводятся занятия и каково максимальное количество пар указано в таблице
LECTURE. Столбцы результирующей таблицы должны иметь имена «МАКС к-во пар» и «К-во дней»
SELECT MAX(LESSON) AS "МАКС количество пар", COUNT(DISTINCT Day) AS "К-во дней" FROM LECTURE;
2) Сколько кафедр и сколько преподавателей на факультете 'компьютерные науки' и какова средняя зарплата
(salary+commission) преподавателей на этом факультете
SELECT Count(DISTINCT d.DepPK), COUNT(*), AVG(Salary + Commission)
FROM FACULTY f, DEPARTMENT d, TEACHER t
WHERE f.FacPK = d.FacFK AND d.DepPK = t.DepFK AND d.Name = 'Компютерні науки';
3) Вывести дважды количество значений в столбце Tel таблицы TEACHER
В первом случае при подсчете количества значений возможные значения NULL для Tel игнорируются. Во
втором случае NULL учитываются как значение ' ' (пустая строка). Почему эти значения могут отличаться?
SELECT Count(Tel), COUNT(nvl(Tel,' '))
FROM TEACHER;
4) Для каждого кафедры факультета 'компьютерные науки', расположенной в корпусе 6, вывести название
кафедры, количество преподавателей на кафедре и количество групп на кафедре. При этом результирующие
столбцы имеют следующие имена:
- Кафедра
- Кол-во преподавателей
- Кол-во групп
SELECT
NAME AS "Кафедра"
FROM DEPARTMENT d
WHERE d.Name = 'Компютерні науки' AND d.BUILDING = 6;
…
5) По каждой зарплате (salary+commission), выплачиваемой преподавателям кафедры, заведующей которой
является Иванов, вывести следующую информацию в столбцах под соответствующими именами:
- зарплата этой группы преподавателей. Если она не определена, то вывести 0 Зарплата
- к-во различных должностей, занимаемых этими преподавателями К-во должностей
- к-во кафедр, на которых работают эти преподаватели К-во кафедр
- к-во телефонов, которыми пользуются эти преподаватели К-во телефонов
SELECT t.Salary+t.Commission AS "Зарплата",
COUNT(DISTINCT t.Post) AS "Кол-во должностей",
COUNT(DISTINCT d.DepPK) AS "Кол-во кафедр",
COUNT(DISTINCT t.Tel) AS "Кол-во телефонов"
FROM TEACHER thead, DEPARTMENT d, TEACHER t
WHERE thead.TchPK = d.headFK AND d.DepPK=t.DepFK AND thead.Name = 'Иванов'
GROUP BY t.Salary + t.Commission;
6) По каждой группе кафедры ИПО вывести:
- номер группы,
- его курс,
- количество преподавателей, которые проводят в ней занятия, и
- количество занятий, которые имеются у ней в расписании,
при условии, что:
- в этой группе проводятся занятия не более, чем по 6-ти дисциплинам, и что
- в ней проводятся занятия в не более, чем в 5-ти аудиториях.
SELECT g.Num, g.Course, COUNT(UNIQUE l.TchFK), COUNT(*)
FROM DEPARTMENT d, SGROUP g, LECTURE l
WHERE d.DepPK=g.DepFK AND g.GrpPK=l.GrpFK AND d.Name ='Програмна інженерія та технологія'
GROUP BY g.Num, g.Course
HAVING COUNT(UNIQUE l.SbjFK) <= 5 AND COUNT(UNIQUE l.RomFK) <= 5;
7) Вывести названия факультетов и дисциплин, которые читаются на этих факультетах преподавателями-
доцентами, являющимися кураторами студентов 3-го курса. Упорядочить по названию факультета в
убывающем порядк и по названию дисциплины в убывающем порядке
SELECT f.Name, s.Name
FROM FACULTY f, DEPARTMENT d, TEACHER t, LECTURE l, SUBJECT s, SGROUP g
WHERE f.FacPK = d.FacFK AND d.DepPK=t.DepFK AND t.TchPK = l.TchFK AND l.SbjFK=s.SbjPK AND t.TchPK = g.Curator AND LOWER(t.Post) = 'доцент' AND g.Course = 3
ORDER BY f.Name DESC, s.Name DESC;