Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DATABASE PC_Company1;
- ------------------------------------------------
- USE PC_Company1;
- CREATE TABLE product (
- code INT PRIMARY KEY,
- maker VARCHAR(10) NOT NULL,
- model VARCHAR(50) NOT NULL,
- TYPE VARCHAR(50) NOT NULL
- );
- CREATE TABLE pc (
- code INT IDENTITY(1,1) PRIMARY KEY REFERENCES product(code),
- model VARCHAR(50) NOT NULL,
- speed SMALLINT NOT NULL,
- ram SMALLINT NOT NULL,
- hd REAL NOT NULL,
- cd VARCHAR(10) NOT NULL,
- price MONEY NOT NULL
- );
- CREATE TABLE laptop (
- code INT IDENTITY(1,1) PRIMARY KEY REFERENCES product(code),
- model VARCHAR(50) NOT NULL,
- speed SMALLINT NOT NULL,
- ram SMALLINT NOT NULL,
- hd REAL NOT NULL,
- screen TINYINT NOT NULL,
- price MONEY NOT NULL
- );
- CREATE TABLE printer (
- code INT IDENTITY(1,1) PRIMARY KEY REFERENCES product(code),
- model VARCHAR(50) NOT NULL,
- color VARCHAR(1) NOT NULL,
- TYPE VARCHAR(10) NOT NULL,
- price MONEY NOT NULL
- );
- ------------------------------------------------
- USE PC_Company1;
- INSERT INTO product (code, maker, model, TYPE) VALUES
- (1, 'A', '1232', 'PC'),
- (2, 'A', '1233', 'PC'),
- (3, 'B', '1121', 'Laptop'),
- (4, 'B', '1750', 'Laptop'),
- (5, 'C', '1288', 'Printer'),
- (6, 'D', '1433', 'Printer'),
- (7, 'A', '1977', 'PC'),
- (8, 'B', '2001', 'PC');
- INSERT INTO pc (model, speed, ram, hd, cd, price) VALUES
- ('1232', 2, 128, 20, '12x', 400),
- ('1233', 2.5, 256, 20, '24x', 550),
- ('1977', 3, 512, 40, '12x', 580),
- ('2001', 2, 256, 30, '12x', 450);
- INSERT INTO laptop (model, speed, ram, hd, screen, price) VALUES
- ('1121', 1.8, 128, 15, 14, 1200),
- ('1750', 2, 256, 20, 15, 1500);
- INSERT INTO printer (model, color, TYPE, price) VALUES
- ('1288', 'y', 'Laser', 300),
- ('1433', 'n', 'Jet', 150);
- ------------------------------------------------
- USE PC_Company1;
- --1) Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 долларов. Вывести: model, speed и hd
- 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) Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12х или 24х CD и цену менее 600 долларов.
- SELECT model, speed, hd
- FROM pc
- WHERE cd IN ('12x', '24x') AND price < 600;
- --5) Для каждого производителя, выпускающего ПК-блокноты c объёмом жесткого диска не менее 10 Гбайт, найти скорости таких ПК-блокнотов. Вывод: производитель, скорость.
- SELECT DISTINCT product.maker, laptop.speed
- FROM product
- INNER JOIN laptop ON product.code = laptop.code
- WHERE laptop.hd >= 10;
- --6) Найдите номера моделей и цены всех имеющихся в продаже продуктов (любого типа) производителя B (латинская буква).
- SELECT product.model,
- CASE product.TYPE
- WHEN 'PC' THEN pc.price
- WHEN 'Laptop' THEN laptop.price
- WHEN 'Printer' THEN printer.price
- END AS price
- FROM product
- LEFT JOIN pc ON product.code = pc.code
- LEFT JOIN laptop ON product.code = laptop.code
- LEFT JOIN printer ON product.code = printer.code
- WHERE product.maker = 'B';
- --7) Найдите производителя, продающего ПК, но не ноутбуки.
- SELECT DISTINCT maker
- FROM product
- WHERE TYPE = 'PC'
- EXCEPT
- SELECT DISTINCT maker
- FROM product
- WHERE TYPE = 'Laptop';
- --8) Найдите модели принтеров, имеющих самую высокую цену. Вывести: model, price
- SELECT model, price
- FROM printer
- WHERE price = (SELECT MAX(price) FROM printer);
- --9) Найдите среднюю скорость ПК, выпущенных производителем A
- SELECT AVG(speed) AS AVG_speed
- FROM pc
- JOIN product ON pc.code = product.code
- WHERE maker = 'A';
- --10) Найти тех производителей ПК, все модели ПК которых имеются в таблице PC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement