59 lines
No EOL
3.1 KiB
Transact-SQL
59 lines
No EOL
3.1 KiB
Transact-SQL
-- Провести оценку количества товара на складе по наименованиям: менее 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; |