
- •Тема 1 Проектирование базы данных
- •Тема 2 Проектирование структуры таблиц при использовании языка Transact-sql
- •Тема 3 Проектирование структуры таблиц при использовании case-средства erwin и консоли sql Server Management Studio
- •Тема 4 sql Server Management Studio
- •Тема 5 Выборка данных из бд
- •Тема 6 Объединение таблиц
- •Тема 7 Вложенные запросы
- •Тема 8 использование оператора exists, case, any и all
- •Тема 9 Запросы на добавление, удаление и изменение записей. Работа с тригирами и транзакциями
- •Тема 10 Проектирование клиентской части приложения
- •Тема 11 Создание отчетов
- •Тема 12 Создание справки и инсталляционного пакета
Тема 7 Вложенные запросы
Задание 1
Выведите отсортированный список дисциплин участвующих в учебном плане.
Код запроса:
Select * from Дисциплиныwhere Код in
(Select Код_дисциплины from Учебный_план) order by полное
Задание 2
Вывести только те дисциплины код, которых больше среднего значения кода дисциплины.
Код запроса:
select код, полное, для_группы, для_подгруппы from Дисциплины
where код>(select avg(код) from Дисциплины)
Задание 3
Используя таблицу учебный план выяснить максимальное количество часов, отводимое на определенный тип дисциплины.
Код запроса:
Select max(Максимальное) from (Select Максимальное= sum (Количество_часов) from Учебный_план group by Тип_дисциплины) as b
Задание 4
Вывести тип дисциплины, на которую больше всего отводится времени.
Код запроса:
Select Тип_дисциплины from Учебный_план
where Количество_часов=(Select max(Количество_часов) from Учебный_план)
Задание 5
Вывести только те записи, из учебного плана, которые относятся к тому типу пар, на который отводится больше всего времени.
Код запроса:
Select * from Учебный_план where Тип_дисциплины in(Select Тип_дисциплины from Учебный_план where Количество_часов=(Select max(Количество_часов) from Учебный_план))
Задание 6
Вывести только те записи при условии что: количество часов меньше среднего значения количества часов, семестр самый минимальный и код дисциплины больше среднего значения кода дисциплины.
Код запроса:
Select * from Учебный_план where Количество_часов<(Select avg (Количество_часов) from Учебный_план) and Семестр in(Select min(Семестр) from Учебный_план) and Код_дисциплины>(select avg(Код_дисциплины) from Учебный_план)
Задание 7
Определить среднее количество часов, отводимых на каждую группу.
Код запроса:
select Группа, avg (Количество_часов)as Среднее количество часов from группы as a, учебный_план as b, Тарификация as c where c.код_группы= a.код_группы and c.Код_учебного_плана=b.Код_учебного_плана group by Группа
Задание 8
Выведите самую популярную дисциплину.
Код запроса:
select полное from дисциплины where код=(select Код_дисциплины from
(Select Код_дисциплины, count(*) as g from Учебный_план group by Код_дисциплины) as d where g=(select max(g) from (Select Код_дисциплины, count(*) as g from Учебный_план group by Код_дисциплины) as r))
Задание 9
Вывести дисциплины, которые ведут преподаватели ПЦК «Информационных дисциплин и математики».
Код запроса:
select distinct полное from (select полное, ПЦК.название from дисциплины,
учебный_план, Тарификация, преподаватели, ПЦК
where учебный_план.код_дисциплины=дисциплины.код
and Тарификация.код_учебного_плана=учебный_план.код_учебного_плана
and Тарификация.код_преподавателя=преподаватели.код_преподавателя
and преподаватели.пцк=ПЦК.номер_пцк)as bg
where название='Информационных дисциплин и математики'
order by полное desc
Задание 10
Определить общее количество часов выдаваемых ПЦК «Информационных дисциплин и математики»
Код запроса:
select sum (Количество_часов) as Количество from
(select дисциплины.полное, название, Количество_часов
from дисциплины, учебный_план, Тарификация, преподаватели, ПЦК
where учебный_план.код_дисциплины=дисциплины.код
and Тарификация.код_учебного_плана=учебный_план.код_учебного_плана
and Тарификация.код_преподавателя=преподаватели.код_преподавателя
and преподаватели.пцк=ПЦК.номер_пцк)as a
where название='Информационных дисциплин и математики'
Задание 11
Определить количество часов отводимых на каждый семестр по специальностям. (отсортировать по специальности, внутри – по семестрам)
Код запроса:
Select b.название, семестр, sum(a.Количество_часов) as Сумма
from Учебный_план as a inner join Специальности as b on a.код_специальности= b.код_специальности group by семестр, b.название
Задание 12
Определить какой преподаватель, в какой группе ведет большее количество дисциплин (сколько).
Код запроса:
select * from (select группа, фио, count (полное) as
Количество from (select distinct группа, фио, полное from Тарификация as a, Преподаватели as b, группы as c, Учебный_план as d, дисциплины as e
where b.код_преподавателя=a.код_преподавателя and a.код_группы= c.код_группы and a.код_учебного_плана=d.код_учебного_плана and d.код_дисциплины=e.код) as rr group by группа,фио) as t where количество in (select max(количество) as ww from (select группа,фио,count (полное) as Количество from (select distinct группа, фио, полное from Тарификация as a, Преподаватели as b, группы as c, Учебный_план as d, дисциплины as e where b.код_преподавателя=a.код_преподавателя and a.код_группы=c.код_группы and a.код_учебного_плана=d.код_учебного_плана and d.код_дисциплины=e.код) as r group by группа,фио) as t)