CREATE TABLE Laptop (
code int NOT NULL ,
model varchar (50) NOT NULL ,
speed smallint NOT NULL ,
ram smallint NOT NULL ,
hd real NOT NULL ,
price decimal(12,2) NULL ,
screen tinyint NOT NULL
);
CREATE TABLE PC (
code int NOT NULL ,
model varchar (50) NOT NULL ,
speed smallint NOT NULL ,
ram smallint NOT NULL ,
hd real NOT NULL ,
cd varchar (10) NOT NULL ,
price decimal(12,2) NULL
);
CREATE TABLE Product (
maker varchar (10) NOT NULL ,
model varchar (50) NOT NULL ,
type varchar (50) NOT NULL
);
CREATE TABLE Printer (
code int NOT NULL ,
model varchar (50) NOT NULL ,
color char (1) NOT NULL ,
type varchar (10) NOT NULL ,
price decimal(12,2) NULL
);
/*----Product------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */
insert into Product values('B','1121','PC')
,('A','1232','PC')
,('A','1233','PC')
,('E','1260','PC')
,('A','1276','Printer')
,('D','1288','Printer')
,('A','1298','Laptop')
,('C','1321','Laptop')
,('A','1401','Printer')
,('A','1408','Printer')
,('D','1433','Printer')
,('E','1434','Printer')
,('B','1750','Laptop')
,('A','1752','Laptop')
,('E','2113','PC')
,('E','2112','PC');
/*----PC------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */
insert into PC values(1,'1232',500,64,5,'12x',600)
,(2,'1121',750,128,14,'40x',850)
,(3,'1233',500,64,5,'12x',600)
,(4,'1121',600,128,14,'40x',850)
,(5,'1121',600,128,8,'40x',850)
,(6,'1233',750,128,20,'50x',950)
,(7,'1232',500,32,10,'12x',400)
,(8,'1232',450,64,8,'24x',350)
,(9,'1232',450,32,10,'24x',350)
,(10,'1260',500,32,10,'12x',350)
,(11,'1233',900,128,40,'40x',980)
,(12,'1233',800,128,20,'50x',970)
;
/*----Laptop------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */
insert into Laptop values(1,'1298',350,32,4,700,11)
,(2,'1321',500,64,8,970,12)
,(3,'1750',750,128,12,1200,14)
,(4,'1298',600,64,10,1050,15)
,(5,'1752',750,128,10,1150,14)
,(6,'1298',450,64,10,950,12)
;
/*----Printer------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */
insert into Printer values(1,'1276','n','Laser',400)
,(2,'1433','y','Jet',270)
,(3,'1434','y','Jet',290)
,(4,'1401','n','Matrix',150)
,(5,'1408','n','Matrix',270)
,(6,'1288','n','Laser',400)
;
-- 1 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΠ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ 500 Π΄ΠΎΠ». ΠΡΠ²Π΅ΡΡΠΈ: model, speed ΠΈ hdLaptop
SELECT model, speed, hd FROM PC
WHERE price < 500;
-- 2 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠ². ΠΡΠ²Π΅ΡΡΠΈ: maker
SELECT DISTINCT maker FROM Product
WHERE Type = 'Printer';
-- 3 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠΊΡΠ°Π½ΠΎΠ² ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠ², ΡΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 1000 Π΄ΠΎΠ».
SELECT model, ram, screen
FROM Laptop
WHERE price > 1000;
-- 4 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ Printer Π΄Π»Ρ ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠ².
SELECT * FROM Printer
Where Color = 'y';
-- 5 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° ΠΠ, ΠΈΠΌΠ΅ΡΡΠΈΡ 12x ΠΈΠ»ΠΈ 24x CD ΠΈ ΡΠ΅Π½Ρ ΠΌΠ΅Π½Π΅Π΅ 600 Π΄ΠΎΠ».
SELECT model, speed, hd FROM PC
Where (cd = '12x' OR '24x') AND price < 600;
-- 6 ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π²ΡΠΏΡΡΠΊΠ°ΡΡΠ΅Π³ΠΎ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΡ c ΠΎΠ±ΡΡΠΌΠΎΠΌ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 10 ΠΠ±Π°ΠΉΡ, Π½Π°ΠΉΡΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠ². ΠΡΠ²ΠΎΠ΄: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΡΠΊΠΎΡΠΎΡΡΡ.
SELECT maker, speed FROM Product
JOIN Laptop ON Product.model=Laptop.model
Where hd >= 10;
-- 7 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΡΠ΅Π½Ρ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² (Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°) ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ B (Π»Π°ΡΠΈΠ½ΡΠΊΠ°Ρ Π±ΡΠΊΠ²Π°)
SELECT l.model, l.price
FROM Laptop l
JOIN Product p ON l.model = p.model
WHERE p.maker = 'B'
UNION
SELECT pc.model, pc.price
FROM PC pc
JOIN Product p ON pc.model = p.model
WHERE p.maker = 'B'
UNION
SELECT pr.model, pr.price
FROM Printer pr
JOIN Product p ON pr.model = p.model
WHERE p.maker = 'B';
-- 8 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π²ΡΠΏΡΡΠΊΠ°ΡΡΠ΅Π³ΠΎ ΠΠ, Π½ΠΎ Π½Π΅ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΡ.
SELECT maker
FROM Product
WHERE type = 'PC'
EXCEPT
SELECT maker
FROM Product
WHERE type = 'Laptop';
-- 9 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΠ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 450 ΠΠ³Ρ. ΠΡΠ²Π΅ΡΡΠΈ: Maker
SELECT DISTINCT maker FROM Product
JOIN PC On Product.model=PC.model
WHERE speed >= 450;
-- 10 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΠ΅Π½Ρ. ΠΡΠ²Π΅ΡΡΠΈ: model, price
SELECT model, price FROM Printer
WHERE price = (SELECT MAX(price) FROM Printer);
-- 11 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΠ.
SELECT AVG(speed) AS average_speed FROM PC;
-- 12 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠ², ΡΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 1000 Π΄ΠΎΠ».
SELECT AVG(speed) as average_speed FROM Laptop
Where price > 1000;
-- 13 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΠ, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ A.
SELECT AVG(speed) as average_speed FROM PC
JOIN Product ON PC.model=Product.model
WHERE maker = 'A';
-- 14 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΆΠ΅ΡΡΠΊΠΈΡ Π΄ΠΈΡΠΊΠΎΠ², ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ Ρ Π΄Π²ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ PC. ΠΡΠ²Π΅ΡΡΠΈ: HD
SELECT hd FROM PC
GROUP BY hd
HAVING COUNT(*) >= 2;
-- 15 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ PC, ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ RAM.
SELECT a.model AS model1, b.model AS model2, a.speed, a.ram
FROM PC a, PC b
WHERE a.speed = b.speed AND a.ram = b.ram AND a.model < b.model;
-- 16 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠ², ΡΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΠ.
SELECT model, speed FROM Laptop
WHERE speed < ALL (SELECT speed FROM PC);
-- 17 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ°ΠΌΡΡ Π΄Π΅ΡΠ΅Π²ΡΡ ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠ². ΠΡΠ²Π΅ΡΡΠΈ: maker, price
SELECT maker, price FROM Printer
JOIN Product ON Printer.model=Product.model
where color = 'y'
AND price = (SELECT MIN(price) FROM Printer WHERE color = 'y');
-- 18 ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Laptop, Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΊΡΠ°Π½Π° Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΈΠΌ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠ². ΠΡΠ²Π΅ΡΡΠΈ: maker, ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΊΡΠ°Π½Π°.
SELECT maker, AVG(screen) AS average_screen_size FROM Laptop
JOIN Product ON Laptop.model=Product.Model
GROUP BY maker;
-- 19 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, Π²ΡΠΏΡΡΠΊΠ°ΡΡΠΈΡ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΠ. ΠΡΠ²Π΅ΡΡΠΈ: Maker, ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΠ.
SELECT maker, COUNT(DISTINCT model) AS number_of_models FROM Product
WHERE type = 'PC'
GROUP BY maker
HAVING COUNT(DISTINCT model) >= 3;
-- 20 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π½Ρ ΠΠ, Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ PC.
SELECT maker, MAX(price) AS max_price FROM Product
JOIN PC ON Product.model=PC.model
WHERE type = 'PC'
GROUP BY maker;
-- 21 ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΠ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠ΅Π³ΠΎ 600 ΠΠΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ΅Π½Ρ ΠΠ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡΠΎΡΡΡΡ. ΠΡΠ²Π΅ΡΡΠΈ: speed, ΡΡΠ΅Π΄Π½ΡΡ ΡΠ΅Π½Π°.
SELECT speed, AVG(price) AS average_price FROM Product
JOIN PC ON Product.model=PC.model
WHERE type = 'PC' AND speed > 600
GROUP BY speed;
-- 22 ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π±Ρ ΠΊΠ°ΠΊ ΠΠ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 750 ΠΠΡ, ΡΠ°ΠΊ ΠΈ ΠΠ-Π±Π»ΠΎΠΊΠ½ΠΎΡΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 750 ΠΠΡ. ΠΡΠ²Π΅ΡΡΠΈ: Maker
SELECT maker FROM Product
JOIN PC ON Product.model=PC.model
WHERE type = 'PC' AND speed >= 750
INTERSECT
SELECT maker FROM Product
JOIN Laptop ON Product.model=Laptop.model
WHERE type = 'Laptop' AND speed >= 750;
-- 23 ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π»ΡΠ±ΡΡ ΡΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΠ΅Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ.
WITH MaxPrice AS (
SELECT MAX(price) AS max_price
FROM (
SELECT price FROM PC
UNION ALL
SELECT price FROM Laptop
UNION ALL
SELECT price FROM Printer
) AS AllProducts
)
SELECT model
FROM (
SELECT model, price FROM PC
UNION ALL
SELECT model, price FROM Laptop
UNION ALL
SELECT model, price FROM Printer
) AS AllProductsWithModels
WHERE price = (SELECT max_price FROM MaxPrice);