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

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

R1 R2

ФИО студента

группы

группы

Факультет

R3

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

ФИО автора

Вид работ

Алмаз

Иванов

УИРС

R4

Вид работ

Количество баллов

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

SELECT R3.NameRab FROM R1, R2, R3 WHERE R1.NGroup=R2.NGroup and R1.Stud =R3.Stud and R2.Fak=4

  1. Факультеты, студенты которых подготовили только УИРС.

SELECT DISTINCT R2.Fak FROM R1, R2, R4 WHERE R2.NGroup=R1.NGroup and R1.Stud=R3.Stud and R3.Work_Type='УИРС' and (R2.Fak not in(SELECT R2.Fak FROM R2, R3, R1 WHERE R2.NGroup=R1.NGroup and R1.Stud=R3.Stud and R2.Work_Type<>' УИРС’));

  1. Студентов, которые представили более одной статьи (вид работы — «Статья»).

SELECT R3.Stud FROM R3 WHERE R3.Wid_Rab=’Статья’ GROUP BY Stud HAVING Count(*)>1

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

SELECT Stud FROM R3 WHERE GROUP BY Stud HAVING Count(DISTINCT Woprk_Type) = (SELECT Count(*) FROM R4)

27. Даны отношения, моделирующие подготовку конкурсных работ студентами вуза:

R1

ФИО

группы

Курс

R2 R5

группы

Выпускающая кафедра

Кафедра

Факультет

R3

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

Вид работы

ФИО студента

Представляющая кафедра

R4

Вид работы

Баллы

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

SELECT R3.KAFEDRA FROM R3, R1 WHERE R1.FIO=R3.FIO GROUP BY R3.KAFEDRA HAVING COUNT( R3.WORK_TYPE) = (SELECT COUNT(*) FROM R4)

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

SELECT DISTINCT Facultet FROM R5 WHERE Kafedra not in(SELECT Kafedra FROM R3)

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

SELECT DISTINCT R1.Group_Num FROM R1, R3 WHERE R1.FIO=R3.FIO and (R1.Group_Num not in (SELECT DISTINCT R1.GROUP_NUM FROM R1, R3 WHERE R3.WORK_TYPE<>'статья' and R1.FIO=R3.FIO))

  1. Студентов 1-го курса, подготовивших работы на своей выпускающей кафедре.

SELECT R1.FIO FROM R1,R2,R3 WHERE R1.FIO=R3.FIO and R2.Kafedra= R3.Kafedra and R1.Kurs=1 R1.GROUP_NUM=R2.GROUP_NUM

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

R1

ФИО

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

R2

Сидоров

75%

ФИО

группы

Иванов

0%

R3

Федоров

100%

группы

Факультет

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

SELECT R6.NGroup FROM (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

  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%’)

29. Даны отношения, моделирующие планируемый учебный процесс: R1 - то, что могут вести преподаватели, R2 - какие занятия предусмотрены по каждой дисциплине для каждой группы, R3 - распределение групп по курсам.

R1

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

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

Вид занятий

R2

группы

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

Вид занятий

R3

группы

Курс

  1. Преподавателей, которые могут вести все виды занятий.

SELECT DISTINCT Prepod FROM (SELECT Prepod, Vid FROM R1 GROUP BY Prepod, Vid HAVING Count(*) = (SELECT Count(DISTINCT Vid) FROM R1))

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

SELECT DISTINCT NGroup FROM (SELECT NGroup, Vid FROM R2 GROUP BY NGroup, Vid HAVING Count(*) = (SELECT Count(DISTINCT Vid) FROM R1))

  1. Курсы, на которых нет занятий вида курсовое проектирование.

SELECT DISTINCT Kurs FROM (SELECT DISTINCT R3.Kurs, R2.Vid FROM R2, R3 WHERE R2.NGroup = R3.NGroup and R3.Kurs not in(SELECT Kurs FROM R3, R2 WHERE R3.NGroup = R2.NGroup and R2.Vid = ‘Курсовая’))

  1. Преподавателей, которые могут вести только один вид занятий.

SELECT Prepod FROM (SELECT DISTINCT Prepod, Vid FROM R1 GROUP BY Prepod, Vid HAVING Count(*) = 1)

  1. Преподавателей, которые ведут занятия на всех старших курсах (начиная с 3-го).

SELECT DISTINCT Prepod, Kurs FROM R1, R2, R3 WHERE R1.Disc = R2.Disc and R2.NGroup = R3.NGroup and R3.Kurs >= 3 GROUP BY Prepod, Kurs HAVING Count(*) = 3