Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- --Задание 3 -- CREATE PROCEDURE upd -- @LocName varchar(50), -- @Height decimal(20,2) = -1, -- @Length decimal(20,2) = -1, -- @Width decimal(20,2) = -1 -- AS -- IF @LocName IN -- (SELECT LocName -- FROM RC_Locations) -- UPDATE RC_Locations SET -- Height = (CASE WHEN @Height <> -1 THEN @Height ELSE Height END), -- Length = (CASE WHEN @Length <> -1 THEN @Length ELSE Length END), -- Width = (CASE WHEN @Width <> -1 THEN @Width ELSE Width END) -- WHERE LocName=@LocName -- ELSE -- INSERT INTO RC_Locations -- VALUES(@LocName, -- (CASE WHEN @Height = -1 THEN NULL ELSE @Height END), -- (CASE WHEN @Length = -1 THEN NULL ELSE @Length END), -- (CASE WHEN @Width = -1 THEN NULL ELSE @Width END)); -- EXEC upd @LocName = 'C1-01-09', -- @Length = 0.7, -- @Width = 0.7 -- EXEC upd @LocName = '08-80-07', -- @Length = 0.3, -- @Width = 0.5 -- EXEC upd @LocName = '08-80-07', -- @Height = 1.3 --=============================================== --Создание и заполнение базы --=============================================== --Создание таблиц CREATE TABLE RC_Materials ( id int IDENTITY (1,1), NameMaterial varchar(50), ExpDate date ) CREATE TABLE RC_Providers ( id int IDENTITY (1,1), NameProvider varchar(50) ) CREATE TABLE RC_PackTypes ( id int IDENTITY (1,1), PackName varchar(10), Volume decimal(20,5) ) CREATE TABLE RC_Locations ( id int IDENTITY (1,1), LocName varchar(50), Height decimal(20,2), Length decimal(20,2), Width decimal(20,2) ) CREATE TABLE RC_Requests ( id int IDENTITY (1,1), RequestName varchar(20), Provider_id int, DeliveryDate datetime ) CREATE TABLE RC_IncomeSummary ( id int IDENTITY (1,1), Material_id int, Location_id int, Request_id int, RecordDate datetime, Quantity decimal, PackType_id int ) -------------------------------------------------------------------------------------------- --Заполнение таблиц insert into RC_Materials (NameMaterial, ExpDate) values ('Акварель (18 цветов)', '2025-08-09'), ('Мишура', null), ('Свеча рождественская', '2022-12-31'), ('Тетрадь 48л', null), ('Ручка шарик. авт', '2030-01-01'), ('Чайник Starwind 5л', '2032-05-07'), ('Дневник 5-11 кл. 48л', null) ,('Календарь 2022','2022-12-31') ,('Воздушные шары 25 шт',null) ,('Дневник 1-4 кл. 48л',null) -------------------------------------------------------------------------------------------- insert into RC_Providers values ('ООО "МегаРон"'),('ООО "Север"'),('ИП Опарина Т.И.') -------------------------------------------------------------------------------------------- insert into RC_PackTypes (PackName,Volume) values ('Короб1',0.015), ('Короб2',0.032), ('Короб3',0.04), ('Штука',0.0004) -------------------------------------------------------------------------------------------- insert into RC_Locations (LocName, Height, Length, Width) values ('C08-36-10', 0.8, 0.72, 1.20), ('M11-01-12', 0.8, 0.48, 1.0), ('08-80-03', 0.8, 0.5, 1.05), ('07-92-02', 0.9, 0.48, 0.5), ('C1-01-09', 1.0, 0.5, 0.5) -------------------------------------------------------------------------------------------- insert into RC_Requests (RequestName, Provider_id, DeliveryDate) values ('R0012074',1,'2022-03-11 11:00'), ('R0011956',3,'2022-04-24 10:00'), ('R0012087',1,'2022-05-03 08:00'), ('R0000708',2,'2022-05-04 13:00'), ('R0012070',1,'2022-06-11 15:00'), ('R0002731',3,'2022-08-05 07:30') -------------------------------------------------------------------------------------------- insert into RC_IncomeSummary (Material_id, Location_id, Request_id, RecordDate, Quantity, PackType_id) values (1, 3,1,'2022-03-11 11:10',2,1), (6, 1, 1,'2022-03-11 11:15',1,2),(4, 3,1,'2022-03-11 11:16',10,4), (2, 3,2,'2022-04-24 10:10',2,1), (3, 3, 2,'2022-04-24 10:18',20,4),(4,2,2,'2022-04-24 10:27',1,1), (7, 4,3,'2022-05-03 08:10',1,1), (10, 4, 3,'2022-05-03 08:30',1,3),(8,4,3,'2022-05-03 08:32',1,1),(5,4,3,'2022-05-03 08:35',2,1), (9,1,4,'2022-05-04 13:02',5,4),(2, 1, 4,'2022-05-04 13:10',1,3), (1,4,5,'2022-06-11 15:08',1,2),(4, 4, 5,'2022-06-11 15:10',1,1),(5, 4, 5,'2022-06-11 15:18',1,1), (8,1,6,'2022-08-05 07:50',5,4),(3, 1, 6,'2022-08-05 07:59',1,3) -------------------------------------------------------------------------------------------- --=============================================== -- Вывод информации из таблиц -- =============================================== select * from RC_Materials select * from RC_PackTypes select * from RC_Providers select * from RC_Locations select r.id, r.RequestName, p.NameProvider, r.DeliveryDate from RC_Requests r join RC_Providers p on r.Provider_id = p.id select i.id, m.NameMaterial, l.LocName, r.RequestName, i.RecordDate, i.Quantity, p.PackName from RC_IncomeSummary i join RC_Materials m on m.id = i.Material_id join RC_Locations l on l.id = i.Location_id join RC_Requests r on r.id = i.Request_id join RC_PackTypes p on p.id = i.PackType_id Select * from rc_IncomeSummary; -- --Задание 1 -- SELECT LocName, -- CASE -- WHEN (SUM(pac.Volume*Quantity)/V)*100 IS NOT NULL -- THEN (SUM(pac.Volume*Quantity)/V)*100 -- ELSE 0 -- END AS fullness -- FROM -- (SELECT id,LocName, Height*Length*Width AS V -- FROM RC_Locations ) loc -- LEFT JOIN RC_IncomeSummary inc ON loc.id=inc.Location_id -- LEFT JOIN RC_PackTypes pac ON inc.PackType_id=pac.id -- GROUP BY LocName,V -- ORDER BY fullness DESC -- --Задание 2 -- SELECT LocName -- FROM RC_Locations loc -- WHERE loc.id NOT IN -- (SELECT Location_id -- FROM RC_IncomeSummary inc -- WHERE RecordDate<'2022-05-01') --Задание 3 -- EXEC upd @LocName = 'C1-01-09', -- @Length = 0.7, -- @Width = 0.7 -- EXEC upd @LocName = '08-80-07', -- @Length = 0.3, -- @Width = 0.5 -- EXEC upd @LocName = '08-80-07', -- @Height = 1.3 --ЗАДАНИЕ 4 WITH nums AS (SELECT req.RequestName, mat.NameMaterial, ROW_NUMBER() OVER (PARTITION BY req.RequestName ORDER BY RecordDate) num FROM RC_Requests req LEFT JOIN RC_IncomeSummary inc ON req.id = inc.Request_id LEFT JOIN RC_Materials mat ON inc.Material_id = mat.id) SELECT RequestName,NameMaterial,num FROM nums WHERE num<=2;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear