[4sem] add db course files

This commit is contained in:
Andrew Nuark G 2021-05-11 22:08:11 +07:00
parent ea29f4148d
commit 827b74f0b4
13 changed files with 1087 additions and 0 deletions

59
4sem/db/lab8-1.sql Normal file
View file

@ -0,0 +1,59 @@
-- Провести оценку количества товара на складе по наименованиям: менее 10 мало,
-- от 10 до 100 достаточно, более 100 избыточно.
SELECT G.[Имя],
SUM([Склад].[Количество]) as AMOUNT,
case
when SUM([Склад].[Количество]) < 10 then N'Мало'
when SUM([Склад].[Количество]) < 101 then N'Достаточно'
else N'Избыточно'
end as ESTIMATION
FROM [Склад]
JOIN [Товар] as G on G.ID = [Склад].[КодТовара]
GROUP BY G.[Имя];
-- Вывести наименования товаров, количество которых на складе от 1 до 10 (35 и 45)
SELECT *
FROM (SELECT G.[Имя],
SUM([Склад].[Количество]) as AMOUNT
FROM [Склад]
JOIN [Товар] as G on G.ID = [Склад].[КодТовара]
GROUP BY G.[Имя]) as SQNG
WHERE AMOUNT BETWEEN 35 AND 45;
-- Определить тройку товаров, выручка за которые самая большая.
SELECT TOP 3 G.[Имя],
SUM(D.[Количество] * [Склад].[Цена]) as AMOUNT
FROM [Склад]
JOIN [Товар] as G on G.ID = [Склад].[КодТовара]
JOIN [Сделка] as D on D.[КодСклада] = [Склад].ID
GROUP BY G.Имя
ORDER BY AMOUNT DESC;
-- Определить суммарную стоимость продаж каждого товара по месяцам.
SELECT G.[Имя],
YEAR(D.[Дата]) as YEAR,
DATENAME(MONTH, D.[Дата]) as MONTH,
SUM(D.[Количество] * [Склад].[Цена]) as AMOUNT
FROM [Склад]
JOIN [Товар] as G on G.ID = [Склад].[КодТовара]
JOIN [Сделка] as D on D.[КодСклада] = [Склад].ID
GROUP BY G.[Имя], YEAR(D.[Дата]), DATENAME(MONTH, D.[Дата])
ORDER BY AMOUNT DESC;
-- Показать месяца, в которых продажи Молока 3,2% (или любого другого товара,
-- хранящегося на складе с разными ID) были ниже 300 денег.
DECLARE @randomGoodsId INT = (SELECT TOP 1 ID
FROM [Товар]
ORDER BY NEWID());
DECLARE @thresholdPrice INT = 200000;
SELECT *
FROM (SELECT G.[Имя],
YEAR(D.[Дата]) as YEAR,
DATENAME(MONTH, D.[Дата]) as MONTH,
SUM(D.[Количество] * [Склад].[Цена]) as AMOUNT
FROM [Склад]
JOIN [Товар] as G on G.ID = [Склад].[КодТовара]
JOIN [Сделка] as D on D.[КодСклада] = [Склад].ID
WHERE [Склад].КодТовара = @randomGoodsId
GROUP BY G.[Имя], YEAR(D.[Дата]), DATENAME(MONTH, D.[Дата])) as SQG
WHERE AMOUNT <= @thresholdPrice;