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

18. Даны отношения, моделирующие получении стипендии студентами. Не все студенты получают стипендию, отсутствие стипендии может быть отмечено 0% или отсутствием записи в r1:

R1

ФИО

Вид стипендии

R2

Сидоров

75%

ФИО

группы

Иванов

0%

R3

Федоров

100%

группы

Факультет

  1. Группы, все студенты которых получают стипендию.

SELECT R6.NGroup FROM (SELECT NGroup, Count(DISTINCT Stud) as CS FROM R2 WHERE Stud in(SELECT Stud FROM R1 WHERE Vid <> ‘0%’)) R6, (SELECT NGroup, Count(DISTINCT Stud) as CS FROM R2) R7 WHERE R6.NGroup = R7.NGroup and R6.CS = R7.CS

  1. Факультеты, на которых есть студенты, не получающие стипендию.

SELECT DISTINCT Fak FROM R3, R2 WHERE R2.NGroup = R3.NGroup and NOT EXISTS(SELECT TOP 1 * FROM R1 where R1.stud = R2.Stud and R1.Vid <> ‘0%’)

  1. Группы, все студенты которых получают только один (любой) вид стипендии.

SELECT R6.NGroup FROM R2, (SELECT NGroup, Count(DISTINCTStud) as CS FROM R2 WHERE Stud in(SELECT Stud FROM R1 WHERE Vid <> ‘0%’)) R6, (SELECT NGroup, Count(DISTINCT Stud) as CS FROM R2) R7 WHERE R6.NGroup = R7.NGroup and R6.CS = R7.CS and R2.NGroup = R6.NGroup and R2.Stud in(SELECT Stud FROM R1 WHERE Vid <> ’0%’ GROUP BY Stud HAVING Count(*)=1)

  1. Факультеты, на которых не учится ни один отличник (стипендия 150%).

SELECT DISTINCT R3.Fak FROM R3, R2 WHERE R3.NGroup = R2.NGroup and not exists(SELECT top 1 * FROM R1 WHERE R1.Stud = R2.Stud and R1.Vid = ‘150%’)

  1. Группы, студенты которых получают все виды стипендии (не считая 0%).

SELECT DISTINCT R3.Fak FROM R3, R2, R1 WHERE R3.NGroup = R2.NGroup and R1.Stud = R2.Stud and R1.Vid <> ‘0%’

GROUP BY R3.Fak, R2.NGroup HAVING Count(DISTINCT R1.Vid) = (SELECT Count(DISTINCT Vid) FROM R1 WHERE Vid <> ‘0%’)

19. Даны отношения:

R1

ФИО преподавателя

Должность

Кафедра

R2

День недели

пары

ФИО преподавателя

группы

Аудитория

R3

ФИО студента

группы

КП

Оц.1

Оц.2

Оц.3

Оц.4

Оц.5

R4

Аудитория

Корпус

  1. Группы, студенты которых ни в один день недели не переезжают в несколько корпусов.

SELECT DISTINCT R2.Day, R2.NGroup, R4.Korpus FROM R2, R4 WHERE R2.Audit = R4.Audit GROUP BY R2.Day, R2.NGroup, R4.Korpus HAVING Count(*) = 1

  1. Группы, у которых ведут занятия преподаватели только одной кафедры.

SELECT DISTINCT R2.NGroup, R1.Kaf FROM R1.Prepod = R2.Prepod GROUP BY R2.NGroup, R1.Kaf HAVING Count(*) = 1

  1. Кафедры, на которых не работает ни одного ассистента (должность — «Ассистент»).

SELECT DISTINCT Kaf FROM R1 WHERE Kaf not in (SELECT Kaf FROM R1 WHERE Dol = ‘Ассистент’)

  1. Группы, студенты которых сдали сессию только на отлично.

SELECT DISTINCT R5.NGroup FROM (SELECT NGroup, Stud FROM R3 WHERE Stud in(SELECT Stud FROM R3 WHERE Bal1 = 5 and Bal2 = 5 and Bal3 = 5 and Bal4 = 5 and Bal5 = 5)) as R5, (SELECT NGroup, Stud FROM R3 WHERE) R6 WHERE R5.NGroup = R6.NGRroup GROUP BY R5.NGroup HAVING Count(R5.Stud) = Count(R6.Stud)