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

45. Даны отношения, моделирующие подачу заявок на международные гранты студентами некоторого вуЗа:

R1

ФИО студента

Название работы

Название гранта

R2

Название гранта

Страна - учредитель

R3

группы

Факультет

R4

ФИО студента

группы

  1. Студентов, некоторые гранты которых учреждены совместно тремя странами.

SELECT DISTINCT Stud FROM (SELECT DISTINCT R1.Stud, R2.Uchr FROM R1, R2 WHERE R1.Grant = R2.Grant GROUP BY R1.Stud, R2.Uchr HAVING Count(R2.Uchr) = 3)

  1. Гранты, на которые претендуют студенты группы 4110.

SELECT DISTINCT R1.Grant FROM R1, R3 WHERE R1.Stud=R3.Stud and R3.Gr=4110

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

SELECT DISTINCT Fak FROM (SELECT DISTINCT Fak, Grant FROM R1,R3,R4 WHERE R1.FIO=R3.Fio and R3.Gr=R4.Gr) GROUP BY Fak, Grant HAVING Count(*)=(SELECT Count(DISTINCT Grant) FROM R2)

  1. Работы, представленные несколькими студентами одного факультета.

SELECT Rab FROM (SELECT DISTINCT Rab, Fak FROM R1, R3, R4 WHERE R1.FIO=R3.Fio and R3.Gr=R4.Gr) GROUP BY Rab, Fak HAVING Count(*)>1

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

R1

Фирма

Страна

R2

Магазин

Название модели

Фирма - поставщик

R3

Название модели

Фирма - изготовитель

  1. Магазины, в которых продаются модели, поставляемые только одной фирмой-поставщиком.

SELECT DISTINCT Magaz FROM R2 GROUP BY Magaz HAVING Count(DISTINCT Post) = 1

  1. Магазины, в которых продаются одинаковые модели, поставляемые различными фирмами.

SELECT DISTINCT a.Magaz FROM R2 as a, R2 as b WHERE a.Magaz = b.Magaz and a.Model = b.Model and a.Post <> b.Magaz

  1. Магазины, в которых продаются модели, поставляемые фирмами только одной страны.

SELECT Magaz FROM (SELECT R2.Magaz, R1.Country FROM R1, R2 WHERE R2.Post = R1.Firm GROUP BY R2.Magaz HAVING Count(DISTINCT R1.Country) = 1)

  1. Магазины, в которых продаются все модели.

SELECT R2.Magaz FROM R2 GROUP BY Magaz HAVING Count(DISTINCT Model) = (SELECT Count(DISTINCT Model) FROM R3)

47. Даны отношения, моделирующие информацию о текущей успеваемости студентов

Если студент не сдавал контрольную работу, то его нет в отношении R1.

R1

ФИО студента

Название дисциплины

контр. работы

Оценка

R2

Название дисциплины

контр. работы

R3

ФИО студента

группы

R4

группы

Факультет

R5

группы

Название дисциплины

  1. Студентов, которые сдали все из требующихся контрольных работ.

SELECT DISTINCT R7.Stud FROM (SELECT Stud, Count(NWork) as CNWork FROM R1) R7, (SELECT R3.Stud, Count(R2.NWork) as CNWork FROM R2, R3, R5 WHERE R2.Disc = R5.Disc, R5.NGroup = R3.Group) R6 WHERE R6.Stud = R7.Stud and R6.CNWork = R7.CNWork

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

SELECT DISTINCT NGroup FROM R3 WHERE Stud in(SELECT DISTINCT R7.Stud FROM (SELECT Stud, Count(NWork) as CNWork FROM R1) R7, (SELECT R3.Stud, Count(R2.NWork) as CNWork FROM R2, R3, R5 WHERE R2.Disc = R5.Disc, R5.NGroup = R3.Group) R6 WHERE R6.Stud = R7.Stud and R6.CNWork = R7.CNWork)

  1. Факультеты, на которых каждый студент получил хотя бы одну двойку.

SELECT DISTINCT Fak FROM (SELECT Fak, Count(Stud) as CStud FROM (SELECT DISTINCT R4.Fak, R3.Stud FROM R1, R3, R4 WHERE R1.Stud = R3.Stud and R3.NGroup = R4.NGroup and R1.Bal = 2) as R6 GROUP BY Fak) as R7, (SELECT Fak, Count(Stud) as CStud FROM (SELECT R4.Fak, R3.Stud FROM R3, R4 WHERE R3.NGroup = R4.NGroup) as R8 GROUP BY Fak) as R9 WHERE R7.Fak = R9.Fak and R7.CStud = R9.CStud

  1. Студентов, которые получили по всем сданным контрольным оценку не ниже 4.

SELECT DISTINCT Stud FROM (SELECT DISTINCT Stud, Count(Bal) as CB FROM R1 WHERE Bal >=4 GROUP BY Stud) R6, (SELECT DISTINCT Stud, Count(Bal) as CB FROM R1 GROUP BY Stud) R7 WHERE R6.Stud = R7.Stud and R6.CB = R7.CB