Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- CreateMarketDB.sql
- CREATE TABLE Salespeople
- (snum INTEGER NOT NULL PRIMARY KEY,
- sname CHAR(10) NOT NULL,
- city CHAR(10),
- comm DECIMAL(18,2));
- CREATE TABLE Customers
- (cnum INTEGER NOT NULL PRIMARY KEY,
- cname CHAR(10) NOT NULL,
- city CHAR(10),
- rating INTEGER,
- snum INTEGER REFERENCES Salespeople);
- CREATE TABLE Orders
- (onum INTEGER NOT NULL PRIMARY KEY,
- amt DECIMAL(18,2),
- odate DATE NOT NULL,
- cnum INTEGER NOT NULL REFERENCES Customers,
- snum INTEGER NOT NULL REFERENCES Salespeople);
- INSERT INTO Salespeople VALUES(1001, 'Peel', 'London', .12);
- INSERT INTO Salespeople VALUES(1002, 'Serres', 'San Jose', .13);
- INSERT INTO Salespeople VALUES(1004, 'Motika', 'London', .11);
- INSERT INTO Salespeople VALUES(1007, 'Rifkin', 'Barcelona', .15);
- INSERT INTO Salespeople VALUES(1003, 'Axelrod', 'New York', .10);
- INSERT INTO Customers VALUES(2001, 'Hoffman', 'London', 100, 1001);
- INSERT INTO Customers VALUES(2002, 'Giovanni', 'Rome', 200, 1003);
- INSERT INTO Customers VALUES(2003, 'Liu', 'San Jose', 200, 1002);
- INSERT INTO Customers VALUES(2004, 'Grass', 'Berlin', 300, 1002);
- INSERT INTO Customers VALUES(2006, 'Clemens', 'London', NULL, 1001);
- INSERT INTO Customers VALUES(2008, 'Cisneros', 'San Jose', 300, 1007);
- INSERT INTO Customers VALUES(2007, 'Pereira', 'Rome', 100, 1004);
- INSERT INTO Orders VALUES(3001, 18.69, '03/10/2000', 2008, 1007);
- INSERT INTO Orders VALUES(3003, 767.19, '03/10/2000', 2001, 1001);
- INSERT INTO Orders VALUES(3002, 1900.10, '03/10/2000', 2007, 1004);
- INSERT INTO Orders VALUES(3005, 5160.45, '03/10/2000', 2003, 1002);
- INSERT INTO Orders VALUES(3006, 1098.16, '03/10/2000', 2008, 1007);
- INSERT INTO Orders VALUES(3009, 1713.23, '04/10/2000', 2002, 1003);
- INSERT INTO Orders VALUES(3007, 75.75, '04/10/2000', 2004, 1002);
- INSERT INTO Orders VALUES(3008, 4723.00, '05/10/2000', 2006, 1001);
- INSERT INTO Orders VALUES(3010, 1309.95, '06/10/2000', 2004, 1002);
- INSERT INTO Orders VALUES(3011, 9891.88, '06/10/2000', 2006, 1001);
- SELECT * FROM Salespeople;
- SELECT * FROM Customers;
- SELECT * FROM Orders;
- -- Составьте запрос, который выводит столбцы в следующем порядке:
- -- номер заказа, дату покупки, сумму заказа, сумму заказа с надбавкой 100
- -- у.е. для всех покупок в таблице Orders, совершенных покупателем с
- -- номером 2004 (столбец cnum) и суммой заказой (столбец amt) не
- -- больше 2000. Отсортируйте результаты по убыванию даты покупки, а
- -- затем по возрастанию увеличенной суммы заказ
- SELECT onum, odate, amt, amt+100 AS S_Nadbavkoy FROM Orders
- WHERE cnum = 2004 and amt <= 2000
- ORDER BY odate DESC, S_Nadbavkoy;
- -- Составьте запрос, который выводит без повторов номера продавцов
- -- (значения столбца snum) из таблицы Orders для всех заказов с
- -- номерами 3003, 3005, 3006, 3008, имеющих сумму покупки (столбец amt) не NULL.
- SELECT DISTINCT snum FROM Orders
- WHERE onum IN (3003, 3005, 3006, 3008) and amt IS NOT NULL
- -- Составьте запрос к таблице Customers, который в результате заменяет
- -- номер прикрепленного продавца (столбец snum) на NULL-значение для
- -- всех покупателей, прикрепленных к продавцу с номером 1001, а для
- -- остальных покупателей оставляет в списке их настоящих продавцов.
- SELECT cnum, cname, CASE
- WHEN snum = 1001 THEN NULL
- ELSE snum END As NewSnum
- FROM Customers;
- -- Составьте запрос к таблице Salespeople, который подсчитывает
- -- максимальный размер комиссионных для продавцов в каждом городе.
- -- Задайте собственное имя для выводимого столбца с максимальным размером комиссионных.
- SELECT city, max(comm) AS 'Максимальные комиссионные' FROM Salespeople
- GROUP BY city
- -- Составьте запрос к таблице Orders, который подсчитывает среднюю
- -- сумму заказов, выполненных за каждый отдельный день продаж по
- -- каждому продавцу. Исключите из результата средние суммы меньшие
- -- 500 у.е. Расположите результаты в порядке возрастания даты заказов, а
- -- затем в порядке убывания средней суммы. Задайте собственное имя для
- -- выводимого столбца со средней суммой заказов
- SELECT odate, snum, AVG(amt) AS sred FROM Orders
- GROUP BY odate, snum
- HAVING sred >= 500
- ORDER BY odate, sred DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement