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;

Соседние файлы в папке Лабораторная работа 5. Функции SQL Oracle. Дополнительные фразы предложения SELECT