Advertisement
Ralip

SQL 3 вариант Данияр 3 работа

May 1st, 2023 (edited)
1,406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.22 KB | None | 0 0
  1. -- CreateMarketDB.sql
  2. CREATE TABLE Salespeople
  3.   (snum  INTEGER  NOT NULL PRIMARY KEY,
  4.    sname CHAR(10) NOT NULL,
  5.    city  CHAR(10),
  6.    comm  DECIMAL(18,2));
  7.  
  8. CREATE TABLE Customers
  9.   (cnum   INTEGER  NOT NULL PRIMARY KEY,
  10.    cname  CHAR(10) NOT NULL,
  11.    city   CHAR(10),
  12.    rating INTEGER,
  13.    snum   INTEGER REFERENCES Salespeople);
  14.  
  15. CREATE TABLE Orders
  16.   (onum  INTEGER NOT NULL PRIMARY KEY,
  17.    amt   DECIMAL(18,2),
  18.    odate DATE    NOT NULL,
  19.    cnum  INTEGER NOT NULL REFERENCES Customers,
  20.    snum  INTEGER NOT NULL REFERENCES Salespeople);
  21.    
  22. INSERT INTO Salespeople VALUES(1001, 'Peel', 'London', .12);
  23. INSERT INTO Salespeople VALUES(1002, 'Serres', 'San Jose', .13);
  24. INSERT INTO Salespeople VALUES(1004, 'Motika', 'London', .11);
  25. INSERT INTO Salespeople VALUES(1007, 'Rifkin', 'Barcelona', .15);
  26. INSERT INTO Salespeople VALUES(1003, 'Axelrod', 'New York', .10);
  27.  
  28. INSERT INTO Customers VALUES(2001, 'Hoffman', 'London', 100, 1001);
  29. INSERT INTO Customers VALUES(2002, 'Giovanni', 'Rome', 200, 1003);
  30. INSERT INTO Customers VALUES(2003, 'Liu', 'San Jose', 200, 1002);
  31. INSERT INTO Customers VALUES(2004, 'Grass', 'Berlin', 300, 1002);
  32. INSERT INTO Customers VALUES(2006, 'Clemens', 'London', NULL, 1001);
  33. INSERT INTO Customers VALUES(2008, 'Cisneros', 'San Jose', 300, 1007);
  34. INSERT INTO Customers VALUES(2007, 'Pereira', 'Rome', 100, 1004);
  35.  
  36. INSERT INTO Orders VALUES(3001, 18.69, '03/10/2000', 2008, 1007);
  37. INSERT INTO Orders VALUES(3003, 767.19, '03/10/2000', 2001, 1001);
  38. INSERT INTO Orders VALUES(3002, 1900.10, '03/10/2000', 2007, 1004);
  39. INSERT INTO Orders VALUES(3005, 5160.45, '03/10/2000', 2003, 1002);
  40. INSERT INTO Orders VALUES(3006, 1098.16, '03/10/2000', 2008, 1007);
  41. INSERT INTO Orders VALUES(3009, 1713.23, '04/10/2000', 2002, 1003);
  42. INSERT INTO Orders VALUES(3007, 75.75, '04/10/2000', 2004, 1002);
  43. INSERT INTO Orders VALUES(3008, 4723.00, '05/10/2000', 2006, 1001);
  44. INSERT INTO Orders VALUES(3010, 1309.95, '06/10/2000', 2004, 1002);
  45. INSERT INTO Orders VALUES(3011, 9891.88, '06/10/2000', 2006, 1001);
  46.  
  47. SELECT * FROM Salespeople;
  48. SELECT * FROM Customers;
  49. SELECT * FROM Orders;
  50.  
  51. -- Составьте запрос, который выводит столбцы в следующем порядке:
  52. -- номер заказа, дату покупки, сумму заказа, сумму заказа с надбавкой 100
  53. -- у.е. для всех покупок в таблице Orders, совершенных покупателем с
  54. -- номером 2004 (столбец cnum) и суммой заказой (столбец amt) не
  55. -- больше 2000. Отсортируйте результаты по убыванию даты покупки, а
  56. -- затем по возрастанию увеличенной суммы заказ
  57.  
  58. SELECT onum, odate, amt, amt+100 AS S_Nadbavkoy FROM Orders
  59. WHERE cnum = 2004 and amt <= 2000
  60. ORDER BY odate DESC, S_Nadbavkoy;
  61.  
  62. -- Составьте запрос, который выводит без повторов номера продавцов
  63. -- (значения столбца snum) из таблицы Orders для всех заказов с
  64. -- номерами 3003, 3005, 3006, 3008, имеющих сумму покупки (столбец amt) не NULL.
  65.  
  66. SELECT DISTINCT snum FROM Orders
  67. WHERE onum IN (3003, 3005, 3006, 3008) and amt IS NOT NULL
  68.  
  69. -- Составьте запрос к таблице Customers, который в результате заменяет
  70. -- номер прикрепленного продавца (столбец snum) на NULL-значение для
  71. -- всех покупателей, прикрепленных к продавцу с номером 1001, а для
  72. -- остальных покупателей оставляет в списке их настоящих продавцов.
  73.  
  74. SELECT cnum, cname, CASE
  75.  WHEN snum = 1001 THEN NULL
  76.  ELSE snum END As NewSnum
  77. FROM Customers;
  78.  
  79. -- Составьте запрос к таблице Salespeople, который подсчитывает
  80. -- максимальный размер комиссионных для продавцов в каждом городе.
  81. -- Задайте собственное имя для выводимого столбца с максимальным размером комиссионных.
  82. SELECT city, max(comm) AS 'Максимальные комиссионные' FROM Salespeople
  83. GROUP BY city
  84.  
  85. -- Составьте запрос к таблице Orders, который подсчитывает среднюю
  86. -- сумму заказов, выполненных за каждый отдельный день продаж по
  87. -- каждому продавцу. Исключите из результата средние суммы меньшие
  88. -- 500 у.е. Расположите результаты в порядке возрастания даты заказов, а
  89. -- затем в порядке убывания средней суммы. Задайте собственное имя для
  90. -- выводимого столбца со средней суммой заказов
  91.  
  92. SELECT odate, snum, AVG(amt) AS sred FROM Orders
  93. GROUP BY odate, snum
  94. HAVING sred >= 500
  95. ORDER BY odate, sred DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement