бд
.docx№16,26,36
Карточка 5,41,7
1. Работы, подготовленные студентами 4-го факультета.
Select R1.Назв. раб.
From R1,R2,R3
Where R4.№ гр.=R1.№ гр. and R1.ФИО=R2.ФИО and R4.Факультет=4
2. Факультеты, студенты которых подготовили только УИРС.
SELECT DISTINCT a_4.Fackultet
FROM R1, R2, R4
WHERE R4.GROUP_NUM=R1.GROUP_NUM And R1.FIO=R2.FIO And R2.Work_Type='УИРС' and (R4.Fackultet not in(Select R4.fackultet from R2,R4,R1
Where R4.GROUP_NUM=R1.GROUP_NUM And R1.FIO=R2.FIO And R2.Work_Type<>' УИРС’));
3. Студентов, которые представили более одной статьи.
Select R2.FIO
From R2
Where R2.Wid_Rab=’Статья’
Group by FIO
Having count(*)>1
4. Студентов, которые подготовили все виды работ.
Select R1.FIO
From R1,R2
Where R1.ФИО=R2.ФИО
Group by R1.FIO
Having count(distinct R2.Woprk_Type)=(select count(*) From R3)
№17,27,37
Карточка 6,15
1. Кафедры, студенты которых подготовили все виды работ.
SELECT R4.KAFEDRA
FROM R4, R1
WHERE R1.FIO=R4.FIO
GROUP BY R4.KAFEDRA
HAVING COUNT( R4.WORK_TYPE) = (SELECT COUNT(*) FROM R5);
2. Факультеты, на которых не было подготовлено ни одной студенческой работы.
Select distinct Facultet
From R3,R4
Where R3.Kafedra not in(Select Kafedra from R4)
3. Группы, студенты которых подготовили только статьи.
SELECT DISTINCT R1.Group_Num
FROM R1, R4
WHERE R1.FIO=R4.FIO and (R1.Group_Num not in (SELECT DISTINCT b_1.GROUP_NUM From R1,R4
WHERE R4.WORK_TYPE<>'статья' And R1.FIO=R4.FIO));
4. Студентов 1-го курса, подготовивших работы на своей выпускающей кафедре.
Select R1.FIO
From R1,R2,R4
Where R1.FIO=R4.FIO and R2.Kafedra= R4.Kafedra and Курс=1 R1.GROUP_NUM=R2.GROUP_NUM
№22,33,42,44
Карточка 12,14
1. Студентов, представивших работы более чем от одной кафедры.
SELECT DISTINCT a.FIO
From R4 as a, R4 as b
Where a.FIO=b.FIO and a.Kafedra<>b.kafedra
2. Кафедры, на которых подготовили работы студенты 3-го курса.
Select distinct R4.Kafedra
From R1,R4
Where R1.FIO=R4.FIO and Курс=3
3. Кафедры, на которых подготовили работы студенты других факультетов.
SELECT DISTINCT a.Kafedra
FROM R3 AS a, R3 AS b, R1, R2, R4
WHERE R1.FIO=R4.FIO and R1.GROUP_NUM=R2.GROUP_NUM and (b.Fackultet in (Select R3.Fackultet From R3,R4 Where R3.KAFEDRA=R4.KAFEDRA)) and (a.Fackultet in(Select R3.Fackultet FROM R4, R3, R2, R1 Where R3.KAFEDRA=R2.KAFEDRA and R1.FIO=R4.FIO and R1.GROUP_NUM=R2.GROUP_NUM)) and a.Fackultet<>b.Fackultet and a.Kafedra=R2.KAFEDRA and b.Kafedra=R4.KAFEDRA;
4. Работы, подготовленные студентами различных факультетов.
Select distinct R4.Work_Name
From R1,R2,R3,R4
Where R3. Kafedra =R2. Kafedra and R1.FIO=R4.FIO and R1.№ гр =R2. .№ гр and
R3. Kafedra =R4. Kafedra
Group by R4.Work_Name,
Having count(*)>1
№14
Карточка 2.
1 Преподавателей, которые могут вести все дисциплины на 3-м курсе.
SELECT R2.FIO
FROM R2, R1
WHERE R1.Disc=R2.Disc And R1.Curs=3
GROUP BY R2.FIO
HAVING count(*)=(Select count(*) From R1 Where Curs=3);
2. Преподавателей, которые могут вести дисциплины только на одном курсе.
SELECT R2.FIO
FROM R2, R1
WHERE R1.Disc=R2.Disc
Group by FIO
Having (avg(R1.Curs))=(min(R1.Curs))
3. Предодавателей, которые ведут все типы занятий (лекции, лабораторные работы, практические занатия, курсовое проектирование).
SELECT Fio
FROM (Select distinct FIO,Tip_Zan From R2)
GROUP BY FIO
HAVING count(*)=(SELECT count(*) FROM (Select Distinct Tip_Zan From R2));
4. Кафедры, преподаватели которых работают только на старших курсах (начиная с 3-го).
SELECT [Kaf]
FROM R3
WHERE (FIO in (Select R3.FIO From R1,R2,R3 Where R3.FIO=R2.FIO and R2.Disc=R1.Disc and R1.Curs>3)) and (FIO not in (Select R3.FIO From R1,R2,R3 Where R3.FIO=R2.FIO and R2.Disc=R1.Disc and R1.Curs<=3));
№21,32,34
Карточка 11,13,22
1. SELECT distinct FIO
From R2
Where Tip_Zan='Лекция' and (FIO not in (Select distinct FIO From R2 Where Tip_Zan<>'Лекция'))
2. SELECT distinct R3.Kaf
From R2,R3
Where R2.FIO=R3.FIO and R2.Tip_Zan<>'Курсовое проектирование'
3. SELECT R1.Curs
From R1,R2,R3
Where R1.Disc=R2.Disc and R2.FIO=R3.FIO and R3.Kaf=44
4. SELECT DISTINCT R3.Kaf
FROM R3, R2, R1
WHERE R3.FIO=R2.FIO and R2.Disc=R1.Disc and R1.Curs<=2 and (R3.Kaf not in (SELECT Distinct R3.Kaf From R3,R2,R1 Where R3.FIO=R2.FIO and R2.Disc=R1.Disc and R1.Curs>2));
№11
Карточка 27
1. Людей, перехавших из одного района в другой.
SELECT DISTINCT R1.[FIO]
FROM R1, R2 AS a, R2 AS b
WHERE (a.Raion in (Select R2.Raion From R1,R2 Where R1.Old_Adr=R2.Adr)) and (b.Raion in(Select R2.Raion From R1,R2 Where R1.New_Adr=R2.Adr)) and a.Raion<>b.Raion and R1.Old_Adr=a.Adr and R1.New_Adr=b.Adr;
2. Людей, которые перехали в тот район, где они работают.
SELECT R1.FIO
From R1,R2 as a,R2 as b,R3
Where R1.FIO=R3.FIO and a.Adr=R1.New_Adr and b.Adr=R3.Adr and (a.Raion in (Select R2.Raion From R1,R2 Where R1.New_Adr=R2.Adr)) and (b.Raion in (Select R2.Raion From R2,R3 Where R2.Adr=R3.Adr)) and a.Raion=b.Raion
3. Людей, которые при перезде сохранили район проживания.
SELECT DISTINCT R1.[FIO]
FROM R1, R2 AS a, R2 AS b
WHERE (a.Raion in (Select R2.Raion From R1,R2 Where R1.Old_Adr=R2.Adr)) and (b.Raion in(Select R2.Raion From R1,R2 Where R1.New_Adr=R2.Adr)) and a.Raion=b.Raion and R1.Old_Adr=a.Adr and R1.New_Adr=b.Adr;
4. Людей, перезжавших несколько раз
Select R1.FIO
From R1
Group by FIO
Having count(*)>1
№10
Карточка 26
1. Изделия, которые производятся только на экспорт.
SELECT distinct R1.Name
FROM R1, R3, R2 AS a, R2 AS b
WHERE R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str<>b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak)) and (Name not in(SELECT R1.Name From R1,R3,R2 as a,r2 as b Where R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str=b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak))))
2. Производителей, которые не выпускают товаров на экспорт.
SELECT distinct R1.Proizv
FROM R1, R3, R2 AS a, R2 AS b
WHERE R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str=b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak)) and (Proizv not in(SELECT R1.Proizv From R1,R3,R2 as a,r2 as b Where R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str<>b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak))))
3. Изделия, которые используются как внутри страны, так и идут на экспорт.
SELECT distinct R1.Name
FROM R1, R3, R2 AS a, R2 AS b
WHERE R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str<>b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak)) and (Name in(SELECT R1.Name From R1,R3,R2 as a,r2 as b Where R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str=b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak))))
4. Материалы, которые используются в изделиях, идущих на экспорт.
SELECT R1.Mat
FROM R1, R3, R2 AS a, R2 AS b
WHERE R1.Shifr=R3.Shifr and Post=Proizv and a.Firm=Post and b.Firm=Zak and a.Str<>b.Str and (a.Str in(Select Str From R2,R3 Where Firm=Post)) and (b.Str in(Select Str From R2,R3 Where Firm=Zak))
5. Поставщиков, которые работают только с одним заказчиком.
SELECT Post
FROM R3
GROUP BY Post
HAVING count(*)=1
№9
Карточка 25
1. Организации - устроители, которые организовали несколько выставок.
SELECT DISTINCT R1.Org_Ustr
FROM R1, R1 AS a
WHERE R1.Vist<>a.Vist And R1.Org_Ustr=a.Org_Ustr;
2. Организации, которые устраивали выставки только в одном городе.
Select Org_Ustr
From (Select distinct Org_Ustr,Gor
From R1,R2
Where R1.Vist=R2.Vist)
Group by Org_Ustr
Having count(*)=1
3. Города, в которых одна организация устраивала несколько выставок.
Select Gor
From (SELECT DISTINCT Org_Ustr, Gor, R1.Vist
FROM R1, R2
WHERE R1.Vist=R2.Vist
Group by Org_Ustr,Gor,R1.Vist)
Group by Gor,Org_ustr
Having count (Vist)>1
4. Выставки, в которых принимала участие, помимо устроителя, только одна организация.
SELECT Vist
FROM Rr1
Group by Vist
Having count(*)=1
5. Выставки, в которых принимало участие несколько организщаций, но только из одного и того же города.
SELECT R1.Vist
FROM R1, R3 AS a, R3 AS b
WHERE a.Org=R1.Org_Ustr And b.Gor=R1.Org_Uch And a.Gor=b.Gor
GROUP BY Vist, Org_Uch
HAVING count(*)>1
Карточка 4 (стр. 4)
1. Склады , с которыми работают сотрудники только своей специализации.
Select Sotr
From (SELECT distinct Sotr,Spez
FROM R1, R3
WHERE R1.Mag=R3.Mag)
Group by Sotr
Having count(Spez)>1
2. Магазины, сотрудники которых заказывают продукцию на складах, расположенных во всех районах из отношения R2.
Select Mag
From (SELECT Mag,Raion
From R1,R2
Where R1.Sklad=R2.Sklad
Group by Mag,Raion)
Group by Mag
Having count(Raion)=(Select count(*)
From (Select distinct Raion From R2))
3. Склады, которые обслуживают магазины только одной специализации.
Select Sklad
From (SELECT distinct Spez,R1.Sklad
From R1,R3
Where R1.Mag=R3.Mag)
Group by Sklad
Having count(*)=1
4. Склады, которые являются основными для всех типов магазинов.
Select Sklad
From R3
Group by Sklad
Having count(*)=(Select count(*) From (SELECT DISTINCT Tip FROM R3))
№8,51(?)
Карточка 44
1. Фондовые магазины, продающие все акции, указанные в R2.
SELECT Mag
From T1
Group by Mag
Having count(*)=(Select count(*) From T2)
2. Фондовые магазины, которые не продают какие-либо акции по номиналу.
Select distinct Mag
From T1,T2
Where T1.Akc=T2.Akc and Cena<>Nomenal
3. Акции, которые продаются только одним фондовым магазином.
Select Akc
From T1
Group by Akc
Having count(*)=1
4. Акции, которые продаются по ценам ниже номинала.
SELECT DISTINCT T1.Akc
FROM T1, T2
WHERE T1.Akc=T2.Akc And Cena<Nomenal
5. Фондовые магазины, которые продают только один вид акций.
SELECT DISTINCT Mag
FROM T1
Group by Mag
Having count(*)=1
№7(?), 50(?)
Карточка 33
1. Организации, которые перечисляют деньги только в благотворительные фонды, расположенные в том же городе, что и сама организация.
SELECT E1.Org
From E1,E2,E3
Where E1.Org=E2.Org and E3.Fond=E1.Fond and E2.Gor=E3.Gor and (E1.Org not in (SELECT E1.Org
From E1,E2,E3
Where E1.Org=E2.Org and E3.Fond=E1.Fond and E2.Gor<>E3.Gor))
2. Фонды, в которые делают отчисления несколько организаций, находящихся в других городах.
SELECT E1.Fond
From E1,E3,E2
Where E3.Fond=E1.Fond and E1.Org=E2.Org and E3.Gor<>E2.Gor and (E1.Fond not in (SELECT distinct E1.Fond
From E1,E3,E2
Where E3.Fond=E1.Fond and E1.Org=E2.Org and E3.Gor=E2.Gor))
Group by E1.Fond
Having count(*)>1
3. Фонды, в которые делают отчисления из всех городов, представленных в отношении R2.
Select Fond
From (SELECT E1.Fond,Gor
From E1,E2
Where E1.Org=E2.Org
Group by E1.Fond,Gor)
Group by Fond
Having count(Gor)=(Select count(*) From (Select distinct Gor From E2))
4. Фонды, в которые делают отчисления все организации, представленные в отношении R2.
Select Fond
From E1,E2
Where E1.Org=E2.Org
Group by Fond
Having count(E1.Org)=(Select count(*) From E2)
№5
Карточка ?6,30(2) (стр 6 -5)
1. Пользователей, которые работают с несколькими приложениями, но в одной операционной системе.
SELECT distinct a.FIO
From R1 as a,R1 as b
Where a.Os=b.Os and a.Pril<>b.Pril and a.Fio=b.Fio
2. Серверы БД, которые работают только с одной БД.
SELECT Serv
From R3
Group by Serv
Having count(*)=1
3. Приложения, которые работают со всеми серверами БД.
SELECT distinct Pril
From (SELECT distinct Pril,Serv
From R3,R2
Where R2.BD=R3.BD)
Group by Pril
Having count(*)=(Select count(*) From (Select distinct Serv From R3))
4. Пользователи, которые работают только с одним сервером БД.
SELECT distinct FIO
FROM R2, R1,R3
WHERE R2.BD=R3.BD And R1.Pril=R2.Pril
Group by FIO,OS
Having count(*)=1
№13
Карточка 1
1. ВУЗы, студенты которых принимали участие только в одной (какой-либо) конференции.
Select Vuz
From (SELECT distinct Vuz,Konf
FROM r_1, r_4
WHERE R_1.Fio=r_4.Fio)
Group by Vuz
Having count(*)=1
2. ВУЗы, в которых проводилось более одной конференции.
Select Vuz
From R_2
Group by Vuz
Having count(*)>1
3. ВУЗы, студенты которых заняли призовые места на всех конференциях.
Select Vuz
From (Select distinct Vuz
From R_4,R_1
Where R_4.FIO=R_1.Fio and Otc>3
Group by Vuz,R_1.Fio
Having count(*)=(Select count(*) From (Select distinct Konf from r_1)))
Where Vuz not in (Select distinct Vuz
From R_4,R_1
Where R_4.FIO=R_1.Fio and Otc<=3)
4. ВУЗы, студенты которых участвовали в конференциях, но не заналя ни одного призового места
Select distinct Vuz
From R_4,R_1
Where R_4.FIO=R_1.Fio and Otc<=3
№41
Карточка 23(1)
1. Кафедры, на которых работают по НИРС студенты только своей специальности.
Select Kaf
From (SELECT distinct T1.Kaf,Spez
From T1,T3
Where t1.Gr=T3.Gr)
Group by Kaf
Having count(*)=1
2. Группы, студенты которых работают по НИРС на всех факультетах (т.е. группы, в которых есть хотя бы один студент, работающий на всех факультетах).
Select Gr
From (SELECT distinct Gr,Fak
From T1,T2
Where t1.Kaf=T2.Kaf)
Group by Gr
Having count(*)=(Select count(*) From (Select distinct Fak From T2))
3. Группы, студенты которых работают только на своей выпускающей кафедре.
Select Gr
From (Select distinct T1.Gr,T1.Kaf,T3.Kaf
From T1,T3
Where T1.Gr=T3.Gr
Group by T1.Gr,T1.Kaf,T3.Kaf
Having count(*)=1)
Where T1.Kaf=T3.Kaf
4. Кафедры, на которых работают по НИРС студенты всех курсов.
Select Kaf
From (Select distinct T1.Kaf,Curs
From T1,T3
Where T1.Gr=T3.Gr)
Group by Kaf
Having count(*)=(Select count(*) From (Select distinct Curs From T3))
Карточка 23(2)
1. Магазины, в которых продаются модели, поставляемые только фирмами-поставщиками только одной страны.
Select Mag
From (SELECT distinct Mag,Str
From E1,E3
Where E1.Firm=E3.Firm)
Group by Mag
Having count(*)=1
2. Магазины, в которых продаются одинаковые модели, поставляемые различными фирмами.
Select distinct a.Mag
From E1 as a,E1 as b
Where a.Mod=b.mod and a.Firm<>b.Firm and a.mag=b.mag
3. Магазины, в которых продаются модели, поставляемые всеми фирмами-изготовителями.
Select Mag
From E1
Where E1.Mod in
(Select distinct E2.Mod From E2 Group by E2.Mod
Having count(*)=(Select count(*) From (Select distinct Firm From E2)))
4. Магазины, в которых продаются все модели из имеющихся в отношении R2.
Select Mag
From (Select distinct Mag,E1.Mod
From E1)
Group by Mag
Having count(*)=(Select count(*) From (Select distinct E2.Mod From E2))
№45(?)
Карточка 25
1. Студентов, гранты которых учреждены несколькими странами.
Select distinct a.Fio
From (SELECT distinct Uchr,Fio,R1.Grant From R1,R2 Where R1.Grant=R2.Grant) as a ,
(SELECT distinct Uchr,Fio,R1.Grant From R1,R2 Where R1.Grant=R2.Grant) as b
Where a.Fio=B.Fio and a.Grant=b.Grant and a.Uchr<>b.Uchr
2. Гранты, на которые претендуют студенты группы 4110.
SELECT distinct R1.Grant
From R1,R3
Where R1.FIO=R3.Fio and Gr=4110
3. Факультеты, студенты которых принимают участие во всех гарантах.
Select Fak
From (SELECT distinct Fak,Grant
From R1,R3,R4
Where R1.FIO=R3.Fio and R3.Gr=R4.Gr)
Group by Fak
Having count(*)=(Select count(*) From (Select distinct Grant From R2))
4. Работы, представленные студентами различных факультетов.
Select Rab
From (SELECT distinct Rab,Fak
From R1,R3,R4
Where R1.FIO=R3.Fio and R3.Gr=R4.Gr)
Group by Rab
Having count(*)>1
Карточка 34
1. Исполнителей, которые по одному проекту сдали более одного этапа.
SELECT distinct a.Fio
From T1 as a,T1 as b
Where A.Fio=b.Fio and a.Proekt=b.Proekt and a.Itap<>b.Itap
2. Исполнителей, которые сдали все этапы по всем проектам, из тех, по которым работает отдел.
Select Fio
From T2
Where Otdel in
(SELECT Otdel
FROM T4
WHERE (Proekt in (SELECT DISTINCT T1.Proekt FROM T3,T1 Where T1.Proekt=T3.Proekt and Otc is not Null Group by T1.Proekt Having max(T1.Itap)=max(T3.Itap)))
and (Otdel not in(Select Otdel From T4 Where (Proekt in (SELECT DISTINCT T1.Proekt FROM T3,T1 Where T1.Proekt=T3.Proekt Group by T1.Proekt Having max(T1.Itap)<>max(T3.Itap))))))
3. Отделы, в которых имеются исполнители, не сдавшие ни одного этапа.
SELECT distinct Otdel
FROM T1,T4
Where T1.Proekt=T4.Proekt and Otc is Null and Itap=1
4. Отделы, в которых нет исполнителей, не сдавших ни одного этапа по какому-либо проекту.
Select distinct Otdel
From T2
Where (FIO not in (SELECT distinct Fio FROM T1 Where Otc is Null and Itap=1))
and (Otdel not in (Select distinct Otdel From T2 Where (FIO in (SELECT distinct Fio FROM T1 Where Otc is Null and Itap=1))))
5. Проекты, по которым имеются задолженности (т.е. исполнители, не сдавшие ни одного этапа).
SELECT distinct Proekt
FROM T1
Where Otc is Null and Itap=1
№1(?),23(?)
Самый первый лист
Филиалы, клиенты которых не имеют счетов в других филиалах.
SELECT DISTINCT FILIAL
FROM (SELECT R1.FILIAL, R1.FIO
FROM R1
GROUP BY R1.FILIAL, R1.FIO)
GROUP BY FILIAL,FIO
HAVING COUNT(*)=1
Клиентов, которые имеют счета во всех филиалах данного банка.
SELECT FIO
FROM
(SELECT DISTINCT FIO,FILIAL
FROM R1
GROUP BY FIO,FILIAL)
GROUP BY FIO
HAVING COUNT(FIO)=(SELECT COUNT(*) FROM R2);
Клиентов, которые имеют только один счет в одном филиале банка.
SELECT R1.FIO
FROM R1
GROUP BY R1.FIO
HAVING COUNT(*)=1
Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.
SELECT FIO
FROM
(SELECT R1.FIO, R2.RAION
FROM R1 INNER JOIN R2 ON R1.FILIAL = R2.FILIAL
GROUP BY R1.FIO, R1.FILIAL, R2.RAION)
GROUP BY FIO,RAION
HAVING COUNT(*)>1
№2(?), 12
Самая вторая страница
1. Клиентов, заключивших договоры с несколькими филиалами.
SELECT CLIENT
FROM
(SELECT R2.Client, R3.Filial
FROM R2 INNER JOIN R3 ON R2.NDog = R3.NDog
GROUP BY R2.Client, R3.Filial)
GROUP BY CLIENT
HAVING COUNT(*)>1
2. Филиалы, которые работают с клиентами только одной страны.
SELECT FILIAL
FROM
(SELECT R3.Filial, R2.Coutry
FROM R2 INNER JOIN R3 ON R2.NDog = R3.NDog
GROUP BY R3.Filial, R2.Coutry)
GROUP BY FILIAL
HAVING COUNT(*)=1
3. Клиентов, которые заключили несколько договоров с одним филиалом.
SELECT CLIENT
FROM R2
WHERE CLIENT NOT IN
(SELECT CLIENT
FROM
(SELECT R2.Client, R3.Filial FROM R2 INNER JOIN R3 ON R2.NDog = R3.NDog
GROUP BY R2.Client, R3.Filial)
GROUP BY CLIENT HAVING COUNT(*)>1)
GROUP BY CLIENT
HAVING COUNT(*)>1
4. Филиалы, которые заключили договоры только с клиентами из той же станы, в которой расположен этот филиал.
SELECT FILIAL
FROM
(SELECT R1.Filial, R1.Country, R2.Country
FROM (R2 INNER JOIN R3 ON R2.NDog = R3.NDog) INNER JOIN R1 ON R3.Filial = R1.Filial
GROUP BY R1.Filial, R1.Country, R2.Country)
GROUP BY R1.FILIAL, R1.COUNTRY
HAVING COUNT(*)=1
№3,24
Самая третья страница
1. Заказчиков, кот. работают со всеми филиалами фирмы, но покупают только один товар.
SELECT ZAK FROM(SELECT DISTINCT R3.Tovar, R2.ZakFROM R2 INNER JOIN R3 ON R2.NZak = R3.NZAKWHERE R2.Zak In (SELECT ZAKFROM R2GROUP BY ZAKHAVING COUNT(FILIAL)=(SELECT COUNT(FILIAL) FROM R1)GROUP BY R2.Zak,R3.Tovar)GROUP BY ZAKHAVING COUNT(*)=1
R4=(R2[R2.ZAK=R3.ZAK]R3)[ZAK,TOVAR]R5=(R4[ZAK=ZAK & TOVAR<>TOVAR]R4)[ZAK]R6=R2[ZAK] \ R5 <– заказчики, пок. только 1 товар.R7=R1[FILIAL] R2[ZAK]R8=R7 \ R2[FILIAL,ZAK] R9=R2[ZAK] \ R8[ZAK] <– зак., раб. со всеми фил.R10=R9?R6
2. Филиалы фирмы, которые торгуют всеми товарами.
SELECT FILIALFROM(SELECT DISTINCT R2.Filial, R3.Tovar FROM R2 INNER JOIN R3 ON R2.NZak = R3.NZAK GROUP BY R2.Filial, R3.Tovar)GROUP BY FILIALHAVING COUNT(*)= (SELECT COUNT(TOVAR) FROM (SELECT DISTINCT TOVAR FROM R3))
R4=R2[FILIAL] R3[TOVAR]R5=(R2[R2.NZAK=R3.NZAK]R3)[FILIAL,TOVAR]R6=(R4 \ R5)[FILIAL] – фил., кот НЕ торг. всеми товарамиR7=R1[FILIAL] \ R6
3. Товары, которые фирма продает только в одной стране.
SELECT TOVAR FROM(SELECT TOVAR,COUNTRYFROM (R1 INNER JOIN R2 ON R1.FILIAL=R2.FILIAL) INNER JOIN R3 ON R2.NZAK=R3.NZAKGROUP BY TOVAR, COUNTRY)GROUP BY TOVARHAVING COUNT(*)=1
R4=R1[R1.FILIAL=R2.FILIAL]R2R5=(R4[R4.NZAK=R3.NZAK]R3)[COUNTRY,TOVAR]R6=(R6[TOVAR=TOVAR & COUNTRY<>COUNTRY]R6) [TOVAR] – товар, прод. в разных странахR7=R3[TOVAR] \ R6
4. Заказчики, кот. работают с филиалами фирмы, кот. расположены только в одной стране.
SELECT ZAKFROM(SELECT R1.FILIAL,ZAKFROM R1 INNER JOIN R2 ON R1.FILIAL= R2.FILIALGROUP BY ZAK,R1.FILIAL)GROUP BY ZAKHAVING COUNT(*)=1
R4=(R2[R2.FILIAL=R1.FILIAL]R1)[ZAK,COUNTRY]R5=(R4[ZAK=ZAK & COUNTRY<> COUNTRY]R4)[ZAK]R6=R2[ZAK] \ R5
№4(?,1-), 25
Карточка 1(5 стр)
1. Файлы, которые имеют нескольких владельцев.
SELECT R1.FILE
FROM R1
GROUP BY R1.FILE
HAVING COUNT(*)>1
2. Программы, которые работают только с одним файлом.
SELECT PROG
FROM R2
GROUP BY PROG
HAVING COUNT(*)=1
3. Файлы, которые имеют одно и тоже имя, но расположены, на различных дисках (один и тот же файл может дублироваться на одном и том же диске несколько раз).
SELECT FILE
FROM
(SELECT FILE,DISC
FROM R3
GROUP BY FILE,DISC)
GROUP BY FILE
HAVING COUNT(FILE)>1
4. Файлы, с которыми работают все программы.
SELECT PROG
FROM R2
GROUP BY PROG
HAVING COUNT(*)=
(SELECT COUNT(FILE)
FROM
(SELECT DISTINCT FILE
FROM R1))
5. Файлы, владельцами которых являются все пользователи ПЭВМ.
SELECT FILE
FROM R1
GROUP BY FILE
HAVING COUNT(*)=
(SELECT COUNT(OWNER)
FROM
(SELECT DISTINCT OWNER
FROM R1))
Карточка 31
1. Группы, все студенты которых сдали все экзамены с первого раза на оценку >=3.
SELECT ГРУППАFROM((R5 NATURAL JOIN R2 AS B) LEFT JOIN (SELECT * FROM R1 WHERE ОЦЕНКА>=3 GROUP BY ФИО,ДИСЦ HAVING COUNT(ДИСЦ)=1) USING ФИО, ДИСЦ)GROUP BY ГРУППАHAVING ОЦЕНКА<>NULL AND COUNT(DISTINCT ФИО) = (SELECT COUNT (*) FROM R2 WHERE R2.Группа = B.Группа)
R6=R1[R1.FIO_S=R2.FIO_S]R2 – тбл.: гр., ФИО_С,дисц.,оц.R7=R5[R5.GROUP=R2.GROUP]R2 – гр,ФИО_С,дисц. (д.б.)R8=(R6[BALL<3])[GROUP] – группы с двоечникамиR9=(R7 \ R6[GROUP,FIO_S, SUBJ])[GROUP] – группы с не сдававшими студентами (есть в R7, но нет в R6)R10=R6[GROUP] \ R8 \ R9 – группы, которые сдавали экзамены, в которых нет двоечников, в которых нет не сдававших студентов
2. Дисциплины, по которым есть пересдававщие студенты.
R6=(R1[FIO_S=FIO_S & SUBJ=SUBJ & DATE<>DATE]R1) [SUBJ]
3. Факультеты, на которых нет задолженностей по сессии.
R6=(R1[BALL>=3])[FIO_S,SUBJ]R7=R6[R6.FIO_S=R2.FIO_S]R2R8=R7[R7.GROUP=R3.GROUP]R3 – фак., гр., фио, дисц. (есть)R9=R3[R3.GROUP=R5.GROUP]R5R10=R9[R9.GROUP=R2.GROUP]R2 – фак., гр., фио, дисц. (д.б.)R11=(R10 \ R[FAK] – фак-ты с должникамиR12=R3[FAK] \ R11
4. Преподавателей, на экзаменах у которых были получены оценки только “хорошо” и “отлично”.
R6=(R4[R4.SUBJ=R1.SUBJ]R1)[FIO_P,BALL]R7=(R6[BALL<=3])[FIO_P] – преподы с 2 и 3R8=R4[FIO_P] \ R7
№6,49(?)
Карточка 32
1. Операторов, работающих с одинаковым программным обеспечением на нескольких рабочих станциях.
SELECT FIO
FROM R3
WHERE FIO IN
(SELECT R3.FIO
FROM R3
GROUP BY R3.FIO
HAVING Count(R3.WSTAT)>1)
GROUP BY SOFT,FIO
HAVING COUNT(SOFT)>1
2. Рабочие станции, связанные с несколькими серверами.
SELECT R1.WSTAT
FROM R1
GROUP BY R1.WSTAT
HAVING Count(R1.SERVER)>1
3. Программное обеспечение, установленное только на одной рабочей станции.
SELECT R2.SOFT
FROM R2
GROUP BY R2.SOFT
HAVING Count(*)=1
4. Серверы, связанные со всеми рабочими станциями
SELECT R1.SERVER
FROM R1
GROUP BY R1.SERVER
HAVING Count(R1.SERVER)=
(SELECT COUNT(WSTAT)
FROM
(SELECT DISTINCT WSTAT
FROM R1))
5. Операторов, работающих со всем программным обеспечением (указанным в R2).
SELECT FIO
FROM R3
GROUP BY FIO
HAVING Count(FIO)=
(SELECT COUNT(SOFT)
FROM
(SELECT DISTINCT SOFT
FROM R2))