Использование оператора EXISTS

Агрегатные функции COUNT, SUM, AVG, MIN, MAX, EVERY,ANY, SOME

1. Сколько преподавателей имеется в базе данных? SELECT COUNT(*) AS «Кол-во преподавателей» FROM ПРЕПОДАВАТЕЛИ  

Использование оператора EXISTS

Унарный оператор EXISTS проверяет, является ли пустым множество, специфицированное в его аргументе. EXISTS принимает значение TRUE, если множество непустое и FALSE в противном случае.

 

Пример 1.

Вывести номера и кол-во мест в аудиториях первого корпуса с вместимостью 30 и более мест, если в этом корпусе имеется хотя бы одна аудитория с вместимостью более 50 мест.

 

SELECT Номер_ауд, Кол-во_мест FROM АУДИТОРИЯ

WHERE Номер_корпуса = 1 AND Кол-во_мест >= 30 AND

EXISTS (SELECT * FROM АУДИТОРИЯ

WHERE Номер_корпуса = 1 AND Кол-во_мест > 50)

 

 

Пример 2.

Вывести названия факультетов, на котором работает хотя бы один преподаватель.

 

SELECT ФИО FROM ФАКУЛЬТЕТ WHERE EXISTS (SELECT * FROM ПРЕПОДАВАТЕЛЬ WHERE ПРЕПОДАВАТЕЛЬ.Код_кафедры IN

SELECT КАФЕДРА.Код_кафедры FROM КАФЕДРА WHERE КАФЕДРА.Код_факультета = ФАКУЛЬТЕТ. Код_факультета))

 

Пример 3.

Вывести названия факультетов, на которых работает хотя бы один профессор и которые имеют более двух кафедр, при этом фонд финансирования более 100000 руб.

 

SELECT ФИО FROM ФАКУЛЬТЕТ WHERE Фонд_фин > 100000 AND

3 <= (SELECT СOUNT(*) FROM КАФЕДРА КАФЕДРА.Код_факультета = ФАКУЛЬТЕТ. Код_факультета) AND

EXISTS (SELECT * FROM ПРЕПОДАВАТЕЛЬ

WHERE ПРЕПОДАВАТЕЛЬ.Должность = ‘Профессор’ AND

ПРЕПОДАВАТЕЛЬ.Код_кафедры IN

(SELECT КАФЕДРА.Код_кафедры FROM WHERE КАФЕДРА.Код_факультета = ФАКУЛЬТЕТ. Код_факультета))

 

 

Функции EVERY, ANY, SOME.

Все ли профессора являются докторами наук: SELECT EVERY(PhD) FROM ПРЕПОДАВАТЕЛЬ WHERE ПРЕПОДАВАТЕЛЬ.Должность = ‘Профессор’

Пример 4.

Вывести названия факультетов, фонды финансирования которых меньше фонда финансирования хотя бы одной из кафедр гидрологического факультета.

 

SELECT Название FROM ФАКУЛЬТЕТ

WHERE Фонд_фин < SOME (SELECT ФАКУЛЬТЕТ.Фонд_фин FROM КАФЕДРА, ФАКУЛЬТЕТ = ФАКУЛЬТЕТ. Код_факультета AND

ФАКУЛЬТЕТ. Название = «Гидрологический»)

 

Пример 5.

 

Вывести фамилии доцентов, зарплата которых больше, чем ставка хотя бы одного из профессоров.

 

SELECT ФИО FROM ПРЕПОДАВАТЕЛЬ

WHERE ПРЕПОДАВАТЕЛЬ.Должность = ‘Доцент’ AND

(Оклад + Премия) > SOME (SELECT Оклад FROM ПРЕПОДАВАТЕЛЬ

WHERE ПРЕПОДАВАТЕЛЬ.Должность = ‘Профессор’