уд5_
.docСанкт-Петербургский государственный университет телекоммуникаций
им. проф. М.А. Бонч-Бруевича
факультет Информационных систем и технологий
Отчёт по лабораторной работе №5
Контрольная работа
Предмет: Управление данными
Выполнил: студент группы ИСТ-03
Брынский А.О.
Санкт-Петербург
2013
Вариант №2
Создать запросы, отвечающие на следующие вопросы:
-
Вывести фамилии и инициалы студентов, получивших пятерку по математике и тройку по физике.
select фамилия f, substr(имя, 1, 1) || '.' i,substr(отчество, 1, 1) || '.' o
from студенты s
where exists (select 1
from успеваемость u,дисциплины d
where u.номер_студента = s.номер_студента
and u.номер_дисциплины = d.номер_дисциплины
and d.название='Физика'
and u.оценка = 3) and exists (select 1
from успеваемость u,дисциплины d
where u.номер_студента = s.номер_студента
and u.номер_дисциплины = d.номер_дисциплины
and d.название='Математика'
and u.оценка = 5)
-
Вывести фамилии студентов, получивших на экзамене только пятерки.
select фамилия f
from студенты s
where
exists (select 1
from успеваемость u
where u.номер_студента = s.номер_студента
and u.оценка = 5) and
not exists (select 1
from успеваемость u
where u.номер_студента = s.номер_студента
and u.оценка in (1,2,3,4))
-
Подсчитать количество студентов, сдававших предмет Математику с первого раза.
select count(*)
from студенты s
where (select count(*)
from успеваемость u,дисциплины d
where u.номер_студента = s.номер_студента
and u.номер_дисциплины = d.номер_дисциплины
and d.название='Математика') = 1
-
Вывести номера студентов и средний балл студентов, средний балл которых не менее 4,5. В выборку не должны попасть студенты, имеющие хотя бы одну 2.
select номер_студента, avg(оценка)
from успеваемость u1
where not exists (select 1
from успеваемость u2
where u2.номер_студента = u1.номер_студента
and u2.оценка = 2)
group by номер_студента
having avg(оценка) >= 4.5
-
Определить преподавателей, которые подчиняются Викулиной В.А. и получают среди этих преподавателей минимальную зарплату.
select *
from преподаватели a,преподаватели b
where
a.подчиняется=b.номер_преподавателя
and b.фамилия ||' '||b.имя||' '||b.отчество='Викулина Валентина Ивановна'
and a.зарплата = (select min(c.зарплата)
from преподаватели c,преподаватели d
where c.подчиняется = d.номер_преподавателя
and d.фамилия ||' '||d.имя||' '||d.отчество='Викулина Валентина Ивановна')
-
Вывести список студентов, у которых хотя бы по одному предмету оценка выше средней оценки по всему списку.
select distinct s.*
from студенты s,
успеваемость u,
(select номер_дисциплины, avg(оценка) avg_oc
from успеваемость
group by номер_дисциплины) avg_tab
where s.номер_студента = u.номер_студента
and u.номер_дисциплины = avg_tab.номер_дисциплины
and u.оценка > avg_tab.avg_oc;
-
Вывести информацию о преподавателях, которые не имеют подчиненных и не проводят занятий ни по одному предмету.
select *
from преподаватели p
where номер_преподавателя not in
(select distinct подчиняется
from преподаватели
where подчиняется is not null)
and not exists (select 1
from дисциплины d
where d.номер_преподавателя = p.номер_преподавателя)
-
Вывести список студентов, сдавших экзамены по Физике и по Математике, и при этом не сдававших Химию.
select distinct s.*
from студенты s,
успеваемость u1,
успеваемость u2
where s.номер_студента = u1.номер_студента
and s.номер_студента = u2.номер_студента
and u1.номер_дисциплины = (select номер_дисциплины from дисциплины where название='Математика')
and u2.номер_дисциплины = (select номер_дисциплины from дисциплины where название='Физика')
and not exists (select 1
from успеваемость u, дисциплины d
where u.номер_студента = s.номер_студента
and u.номер_дисциплины = d.номер_дисциплины
and d.название='Химия')
Вывод
Созданы запросы, отвечающие на вопросы