Извлечь номера и названия всех блюд, для которых не указаны входящие в него продукты, либо указан всего один продукт
Извлечь номера и названия предметов, по которым получил отличную оценку хотя бы один студент первого курса специальности АСУ
Select distinct Predm.no_pr, Predm.naim_pr
From Stud, Predm, Uspev
Where Stud.no_st = Uspev.no_st
And Predm.no_pr = Uspev.no_pr
And Uspev.ocenka=5
And Stud.spec=”АСУ”
And Stud.kurs=1
Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;
Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;
Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.
Извлечь номера и названия предметов, сданных на "хорошо" и "отлично" всеми студентами первого курса специальности АСУ
SELECT [predm].[no_pr], [predm].[naim_pr]
FROM (uspev INNER JOIN predm ON [uspev].[no_pr]=[predm].[no_pr]) INNER JOIN stud ON [uspev].[no_st]=[stud].[no_st]
WHERE ([uspev].[ocenka]=4 Or [uspev].[ocenka]=5) And [stud].[kurs]=1 And [stud].[spec]="asu";
Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;
Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;
Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.
Извлечь номера и фио студентов, сдавших на "отлично" в точности все те предметы, которые сдал на "отлично" студент Иванов П.С.
SELECT DISTINCT [Stud].[no_st], [Stud].[fio]
FROM Uspev, Stud
WHERE Uspev.no_pr In( Select no_pr From Uspev, Stud Where Uspev.no_st = Stud.no_st And Stud.fio ="иванов п.с." And Uspev.ocenka = 5) And Uspev.no_st = Stud.no_st And Uspev.ocenka = 5 And Stud.fio <> "иванов п.с.";
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия всех блюд с указанием названия каждого используемого продукта и его количества (для блюд, для которых не указано ни одного продукта, соответствующие значения – Null).
Select Рецепт_Блюдо.ном_бл, Рецепт_Блюдо.назв_бл, Продукт.назв_прод, Рецепт_Блюдо.кол_прод_в_блюде
From (
Select Блюдо.ном_бл As ном_бл,
Блюдо.назв_бл As назв_бл,
Рецепт.кол_прод_в_блюде As кол_прод_в_блюде,
Рецепт.ном_прод As ном_прод
From Блюдо Left Join Рецепт On
Рецепт.ном_бл = Блюдо.ном_бл
) As Рецепт_Блюдо Left Join Продукт On
Продукт.ном_прод = Рецепт_Блюдо.ном_прод
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия всех блюд, для которых не указаны входящие в него продукты, либо указан всего один продукт
Select Блюдо.ном_бл
From Блюдо
Where Блюдо.ном_бл Not In (
Select Блюдо.ном_бл
From Блюдо
Where ( Select Count(*) As прод_count
From Рецепт
Where Рецепт.ном_бл = Блюдо.ном_бл)>1)
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь сведения о блюдах с калорийностью ниже 500: номер, название, количество продуктов, входящих в блюдо (калорийность блюда рассчитывать как произведение калорийности продукта на количество продукта в блюде, просуммированное по всем продуктам, входящим в блюдо)
Select Рецепт_нов.ном_бл, Блюдо.назв_бл, сум_кол_прод_в_блюде, сум_калорийность
From (
Select Рецепт.ном_бл As ном_бл, sum (Рецепт.кол_прод_в_блюде * Продукт.калорийность) As Сум_калорийность,
Count{sum} (Рецепт.кол_прод_в_блюде) As сум_кол_прод_в_блюде
From Рецепт, Продукт
Where Продукт.ном_прод = Рецепт.ном_прод
Group By Рецепт.ном_бл) As Рецепт_нов,
Блюдо
Where Рецепт_нов.сум_калорийность <500
And Блюдо.ном_бл = Рецепт_нов.ном_бл
{sum, если считать поле кол_прод_в_блюде;
count, если считать поле ном_пр, т.е. сколько разных продуктов в блюде}
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия блюд, содержащих в количестве более 100 ед. хотя бы один продукт из тех, которые содержит блюдо "Жюльен с грибами а ля рюс"
SELECT ном_бл, назв_бл
FROM блюдо xb
WHERE ном_бл IN (
SELECT ном_бл
FROM рецепт XР
WHERE кол_прод_в_блюде > 100
AND ном_пр IN (
SELECT ном_пр
FROM рецепт YР
WHERE ном_бл IN (
SELECT ном_бл
FROM блюдо Yb
WHERE назв_бл= "жюльен")))
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия блюд, содержащих в количестве более 100 ед., по крайней мере, все те продукты, которые содержит блюдо "Солянка балтийская"
SELECT ном_бл, назв_бл
FROM Блюдо
WHERE ном_бл IN (
SELECT ном_бл
FROM Рецепт
WHERE кол_прод_в_блюде > 100 AND
NOT EXISTS (
SELECT *
FROM Рецепт
WHERE ном_бл IN (
SELECT ном_бл
FROM Блюдо
WHERE назв_бл = 'Солянка') AND
ном_пр NOT IN (
SELECT ном_пр
FROM Рецепт
WHERE Блюдо.ном_бл = Рецепт.ном_бл)))
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь статистику уровней калорийности продуктов: калорийность, количество продуктов, имеющих эту калорийность, количество блюд, содержащих продукты этой калорийности
SELECT Kal.калорийность, Pr.kol_pr, Bl.kol_bl
FROM [Select distinct П_2.калорийность
from Продукт П_2]. AS Kal,
[SELECT DISTINCT К.калорийность,
count(t.ном_прод) as kol_pr
FROM [Select distinct П_2.калорийность
from Продукт П_2 ]. AS К,
(SELECT Distinct П_4.калорийность, П_4.ном_прод
from Продукт П_4, (Select distinct П_5.калорийность
from Продукт П_5 ) П_6
where П_4.калорийность=П_6.калорийность)
AS t
WHERE К.калорийность=t.калорийность
GROUP BY К.калорийность]. AS Pr,
[SELECT Distinct П_3.калорийность, count(Р_3.ном_бл) as kol_bl
from Продукт П_3, Рецепт Р_3
where П_3.ном_прод=Р_3.ном_пр
group by П_3.калорийность]. AS Bl
WHERE Kal.калорийность=Pr.калорийность
and Kal.калорийность=Bl.калорийность;
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Использование блюд и продуктов: название блюда, название продукта, необходимое количество (для блюд с отсутствующими сведениями о продуктах, и продуктов с отсутствующими сведениями об их использовании в блюдах, – соответствующие значения должны быть Null)
SELECT distinct Блюдо.назв_бл as nm_bl,
Продукт.назв_прод as nm_pr,Рецепт.Кол_прод_в_блюде as kol
from Блюдо,Продукт,Рецепт
Where Блюдо.ном_бл=Рецепт.ном_бл
and Продукт.ном_прод=Рецепт.ном_пр
union
SELECT distinct Блюдо.назв_бл as nm_bl,' ' as nm_pr,' ' as kol
from Блюдо, Рецепт
Where ( Блюдо.ном_бл not in (Select Рецепт.ном_бл
From Рецепт))
UNION
SELECT distinct ' ' as nm_bl,Продукт.назв_прод as nm_pr,' ' as kol
from Продукт, Рецепт
Where ( Продукт.ном_прод not in (Select Рецепт.ном_пр
From Рецепт));
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия блюд, не содержащих в количестве более 100 ед. ни одного продукта, кроме тех, которые содержит блюдо "Солянка донская"
SELECT блюдо.ном_бл, [назв_бл]
FROM Блюдо
WHERE NOT EXISTS (
SELECT ном_пр
FROM Рецепт1
WHERE кол_прод_в_блюде > 100 AND
рецепт1.ном_бл = блюдо.ном_бл AND
ном_пр NOT IN (
SELECT ном_пр
FROM Рецепт1, блюдо
WHERE рецепт1.ном_бл = блюдо.ном_бл AND
назв_бл = 'Солянка'));
Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;
Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;
Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.
Извлечь сведения о студентах со средним баллом выше 4,7: номер, ф.и.о., значения минимального, максимального и среднего баллов (не учитывать "хвосты")
SELECT [stud].[no_st], [stud].[fio], MIN([uspev].[ocenka]) AS minoc, MAX([uspev].[ocenka]) AS maxoc, AVG([uspev].[ocenka]) AS Sredn
FROM stud, uspev
WHERE stud.no_st = uspev.no_st AND stud.no_st IN ( SELECT uspev.no_st FROM uspev GROUP BY uspev.no_st HAVING AVG(uspev.ocenka) >"4.7")
GROUP BY [stud].[no_st], [stud].[fio]
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь сведения о блюдах с калорийностью выше калорийности блюда номер 123: номер, название, калорийность (калорийность блюда рассчитывать как произведение калорийности продукта на количество продукта в блюде, просуммированное по всем продуктам, входящим в блюдо)
select блюдо.назв_бл, sum(продукт.калорийность*рецепт.кол_прод_в_блюде) as Калорийность
from (блюдо inner join рецепт on блюдо.ном_бл=рецепт.ном_бл) inner join продукт on рецепт.ном_прод=продукт.ном_прод
group by блюдо.ном_бл, блюдо.назв_бл
having sum(продукт.калорийность*рецепт.кол_прод_в_блюде)>
any (select sum(продукт.калорийность*рецепт.кол_прод_в_блюде)
from рецепт inner join продукт on рецепт.ном_прод=продукт.ном_прод
where рецепт.ном_бл=123
group by ном_бл)
Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;
Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;
Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.
Извлечь статистику успеваемости по специальностям и курсам: специальность, курс, минимальный, максимальный, средний баллы (не учитывать "хвосты")
SELECT [spec], [kurs], MIN([uspev].[ocenka]) AS minocen, MAX([uspev].[ocenka]) AS maxocen, AVG([uspev].[ocenka]) AS Sredn
FROM stud, uspev
WHERE [stud].[no_st]=[uspev].[no_st]
GROUP BY [spec], [kurs];
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.