ответы на задачи к экзамену бд
.pdfВывести номера тех групп, в которых студенты сдали экзамен по предмету «тс», но не сдавали по предмету «СА»
select gr.groupNumber from studentGroup gr where (select count(*) from student
inner join ex on ex.za4otka = student.za4otka
where predmet = 'CA' and groupNumber = gr.groupNumber ) = 0 AND
(select count(*) from student
inner join ex on ex.za4otka = student.za4otka
where predmet = 'ТС' and groupNumber = gr.groupNumber ) = (select count(*)
from student
inner join ex on ex.za4otka = student.za4otka where groupNumber = gr.groupNumber
)
Вывести номера групп иэф где более 20 студентов сдали ТС на оценку , которая превышает среднюю оценку по этому предмету на фкп
declare @average as float
set @average = (select AVG(ocenka) from ex
inner join student on student.za4otka = ex.za4otka
inner join studentGroup on studentGroup.groupNumber = student.groupNumber where studentGroup.faculty = 'fcp'
)
select gr.groupNumber from studentGroup gr
where faculty = 'ief' and (select count(*) from student
inner join ex on ex.za4otka = student.za4otka where predmet = 'ТС' and ocenka > @average ) > 20
Вывести номера зачеток и фамилии студентов факультетов 'ИЭФ', 'ФКП','ФИТУ' , которые получили только 10и более ,чем по 10 предметам и сделать сортировку по убыванию количества полученных 10ок
select surname, za4otka from student
inner join studentGroup on studentGroup.groupNumber = student.groupNumber where (faculty = 'ief' OR faculty = 'fkp' OR faculty = 'fitu') AND
(select count(*) from ex
where ocenka = 10 AND za4otka = student.za4otka ) > 10
order by (select count(*) from ex
where ocenka = 10 AND za4otka = student.za4otka ) desc
Вывести номера групп, где средняя отметка группы за предмет "Теория систем" превышает среднюю отметку за "Системный анализ" этой же группы
select groupNumber from studentGroup gr
where (select AVG(ocenka) from ex
inner join student on student.za4otka = ex.za4otka
where predmet = 'теория систем' and student.groupNumber = gr.groupNumber ) > (select AVG(ocenka)
from ex
inner join student on student.za4otka = ex.za4otka
where predmet = 'системный анализ' and student.groupNumber = gr.groupNumber
)
Вывести студентов из группы '123456', которые сдали хотя бы один семест со всеми 4
select student.* from student
inner join ex exam on exam.za4otka = student.za4otka where (
select count(*) from ex
where ex.za4otka = student.za4otka AND exam.sem = ex.sem AND ocenka = 4 ) = (
select count(*) from ex
where ex.za4otka = student.za4otka AND exam.sem = ex.sem
)
Вывести номера групп ИЭФ, ФИТУ, ФКП, в которых год рождения всех студентов одинаковый. Отсортировать по году рождения в порядке убывания
select gr.groupNumber from studentGroup gr
where (faculty = 'ief' OR faculty = 'fity' OR faculty = 'fkp') AND (SELECT count(DISTINCT student.godRozhdeniya)
FROM student
where groupNumber = gr.groupNumber) = 1 order by (SELECT top 1 student.godRozhdeniya FROM student
where groupNumber = gr.groupNumber) desc
ИЛИ
select studentGroup.groupNumber from studentGroup
where studentGroup.faculty in ('ief', 'fity', 'fkp') AND (select count(student.godRozhdeniya)
from student
where student.groupNumber = studentGroup.groupNumber group by student.godRozhdeniya) = 1
order by (select top 1 student.godRozhdeniya from student
where student.groupNumber = studentGroup.groupNumber)
Вывести семестр, где ниодна группа не сдавала экзамен "Теория систем". Вывести семестр по убыванию
select exam.sem from ex exam
where (select count(*) from ex
where sem = exam.sem AND predmet = 'Теория систем') = 0 group by exam.sem
order by exam.sem desc