131
GROUP BY [№ зач.книжки] HAVING Ауg(Результат) > 4.5
2) SELECT'{Koд дисциплины], Avg(Peзультат) AS Средний_балл
FROM Результаты GROUP BY [Код дисциплины] HAVING
Avg(Peзультат) < 4
В первом случае создается список фамилий студентов с указанием
среднего балла по каждому студенту, выводятся фамилии тех студентов,
которые имеют средний балл выше 4.5. Во втором случае выводится список
кодов дисциплин со средним баллом при условии
, что он ниже 4.
5.4.4 Подчиненный запрос
В инструкцию SELECT может быть вложена другая инструкция SELECT,
SELECT...INTO, INSERT. INTO, DELETE или UPDATE. Различают основной и
подчиненные запросы, которые являются вложенными в основной запрос.
Подчиненный запрос можно использовать вместо выражения в списке
полей инструкции SELECT или в предложениях WHERE и HAVING.
Существуют три типа подчиненных запросов:
1) сравнение (ANY | ALL | SOME) (инструкция);
2) выражение [NOT] IN (инструкция);
3) [NOT] EXISTS (инструкция).
Первый тип
— сравнение выражения с результатом подчиненного запроса.
Ключевые слова:
ANY — каждый (сравнение с каждым элементом подчиненной выборки).
ALL — все (сравнение со всеми элементами подчиненной выборки).
SOME — некоторые (сравнение с некоторыми элементами подчиненной
выборки).
Пример:
SELECT* FROM Оценка WHERE [Результат] > ANY
(SELECT [Результат] FROM Оценка
WHERE Результат.[№зач.книжки]="123124")
Отбираются только те записи из таблицы Оценка, в которых значение
результата больше (выше) каждой оценки студента с № зач.книжки 123124.
Второй тип — выражение, которое должно быть найдено в наборе
записей, являющихся результатом выполнения подчиненного запроса.
Пример:
1)SELECT * FROM Студент WHERE [№ зач.книжки] IN
(SELECT [№ зач.книжки] FROM Оценка WHERE [Результат] > =4)
2)SELECT * FROM Дисциплина WHERE [Код дисциплины] NOT IN
(SELECT [Код дисциплины] FROM Оценка)
В первом случае отбираются студенты, которые в таблице
Оценка имеют
результат 4 или выше.
Во втором случае отбираются дисциплины, которые не встречаются в
таблице Оценка.