Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ответы на задачи к экзамену бд

.pdf
Скачиваний:
191
Добавлен:
17.06.2021
Размер:
5.24 Mб
Скачать

Вывести номера тех групп, в которых студенты сдали экзамен по предмету «тс», но не сдавали по предмету «СА»

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