Основы языка TRANSACT SQL. Казакова И.А. - 79 стр.

UptoLike

Составители: 

78
Во вложенном подзапросе определяется максимальное коли-
чество часов, которое отводится на изучение предмета. Во внешнем
подзапросе название предмета, для которого количество часов
оказалось равным максимальному.
Результат выполнения запроса приведен на рис. 25.
Рис. 25. Скалярный подзапрос
Следует отметить, что нельзя прямо использовать предло-
жение WHERE Количество = MAX (Количество), поскольку
применять обобщающие функции в предложениях WHERE за-
прещено. Для достижения желаемого результата следует создать
подзапрос, вычисляющий максимальное значение количества, а за-
тем использовать его во внешнем операторе SELECT, предназна-
ченном для выборки названия предмета, где количество часов сов-
пало с максимальным значением.
Пример 59. Вывести список студентов, получающих стипен-
дию выше средней, и указать для этих студентов превышение над
средним уровнем:
SELECT FIO AS ФИО, Stipendiya AS Стипендия,
Stipendiya - (SELECT AVG (Stipendiya)
FROM Students)
AS Превышение FROM Students
WHERE Stipendiya > (SELECT AVG (Stipendiya)
FROM Students);
Результат выполнения запроса приведен на рис. 26.
Рис. 26. Скалярный подзапрос
с немодифицированным оператором сравнения
     Во вложенном подзапросе определяется максимальное коли-
чество часов, которое отводится на изучение предмета. Во внешнем
подзапросе – название предмета, для которого количество часов
оказалось равным максимальному.
     Результат выполнения запроса приведен на рис. 25.




                  Рис. 25. Скалярный подзапрос

     Следует отметить, что нельзя прямо использовать предло-
жение WHERE Количество = MAX (Количество), поскольку
применять обобщающие функции в предложениях WHERE за-
прещено. Для достижения желаемого результата следует создать
подзапрос, вычисляющий максимальное значение количества, а за-
тем использовать его во внешнем операторе SELECT, предназна-
ченном для выборки названия предмета, где количество часов сов-
пало с максимальным значением.
     Пример 59. Вывести список студентов, получающих стипен-
дию выше средней, и указать для этих студентов превышение над
средним уровнем:
     SELECT FIO AS ФИО, Stipendiya AS Стипендия,
     Stipendiya - (SELECT AVG (Stipendiya)
      FROM Students)
      AS Превышение FROM Students
     WHERE Stipendiya > (SELECT AVG (Stipendiya)
                          FROM Students);
     Результат выполнения запроса приведен на рис. 26.




                   Рис. 26. Скалярный подзапрос
           с немодифицированным оператором сравнения
                              78