Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет БД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
12.88 Mб
Скачать

Тема 8 использование оператора exists, case, any и all

Задание 1

Если на определенную группу составлена тарификация - вывести сообщение: 'На данную группу составлена тарификация', в противном случаии вывести: 'На данную группу не составлена тарификация'. В примере использовать группу “14 тп” и “5 уф”.

Код запроса:

if exists (select * from (Select distinct Группа from Группы

as A left join Тарификация as B on A.код_группы=B.код_группы

where Код_тарификации is not null) as c where группа='14 тп' )

begin print 'На данную группу составлена тарификация'

end

else

begin

print 'На данную группу не составлена тарификация'

end

Задание 2

Если хотя бы на одну специальность отводится меньше 5000 часов – вывести специальности, на которые отводится меньше 3000 часов, в противном случае вывести специальности, на которые отводится больше 3000 часов. (поменяйте знак меньше возле 5000 на больше, осмыслить результат).

Если меньше 5000:

Если больше 5000:

Код запроса:

if exists (select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности

group by название) as v

where часов<5000)

begin

select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности group by название) as v

where часов<3000

end else select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности group by название) as v

where часов>3000

Если больше 5000:

if exists (select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности

group by название) as v where часов>5000)

begin

select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности

group by название) as v where часов<3000

end else select * from (select название,часов=sum(Количество_часов)

from Специальности as A join Учебный_план as B

on A.код_специальности=B.Код_специальности

group by название) as v where часов>3000

Задание 3

Если все дисциплины задействованы в учебном плане, вывести сообщение: 'В учебном плане задействованы все дисциплины', в противном случаии, вывести список не зайдействованных дисциплин в учебном плане.

Код запроса:

if exists (select полное from дисциплины where дисциплины.код

not in (select distinct код_дисциплины from учебный_план))

select полное from дисциплины where дисциплины.код

not in (select distinct код_дисциплины from учебный_план)order by полное

else

print 'В учебном плане задействованы все дисциплины'

Задание 4

Вывести информацию и таблицы Учебный план в следующем формате, если цифра 1 вывести слово Первый, 2 – Второй, 3 – Третий, 4 – Четвертый, для остальных цифр словосочетание : Я такой не знаю.

Код запроса:

Select курс=Case курс

when 1 then 'Первый' when 2 then 'Второй'

when 3 then 'Третий' when 4 then 'Четвертый'

end,

семестр=CASE семестр when 1 then 'Первый'

when 2 then 'Второй'

when 3 then 'Третий'

when 4 then 'Четвертый'

else 'Я такой не знаю'

end

from учебный_план

Задание 5

Вывести информацию о преподаваемых дисциплинах в первом семестре, при этом вывести дополнительный столбец “Пояснение”: если на дисциплину отводится меньше 30 часов вывести сообщение: “Что-то маловато”, если больше или равно 30, но меньше 50, вывести: “Нормально”, если больше или равно 50, но меньше 100, вывести: “Достаточно”, если больше или равно 100, вывести: “Что-то многовато”.

Код запроса:

select a.семестр, a.тип_дисциплины, b.Полное, a.Количество_часов,

'Пояснение' = Case when Количество_часов < 30 then 'Что-то маловато'

when Количество_часов >= 30 and Количество_часов < 50 then 'Нормально'

when Количество_часов >= 50 and Количество_часов < 100 then 'Достаточно'

when Количество_часов >= 100 then 'Что-то многовато'

end from Учебный_план as a, Дисциплины as b

where b.код=a.код_дисциплины and семестр=1

Задание 6

Используя, оператор ANY, вывести отсортированный список дисциплин, которые задействованы в учебном плане.

Код запроса:

select код, Полное, для_группы, для_подгруппы from Дисциплины

where код=any (select distinct код_дисциплины from Учебный_план)

order by полное

Задание 7

Используя, оператор ALL, вывести записи из таблицы Дисциплины, при условии, что код дисциплины меньше среднего значения кода дисциплины из таблицы Учебный план.

Код запроса:

select * from дисциплины where код<all(select avg (код_дисциплины)from учебный_план ) order by полное

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]