Advertisement
shchuko

DB_Lab5

May 5th, 2019
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.11 KB | None | 0 0
  1. 1) Получить упорядоченный по возрастанию список идентификаторов поставщиков, поставляющих товары для горной линейки велосипедов
  2.  
  3.     SELECT DISTINCT VendorID
  4.     FROM Purchasing.ProductVendor
  5.     WHERE ProductID IN
  6.         (SELECT PP.ProductID
  7.         FROM Production.Product AS PP
  8.         WHERE PP.ProductLine = 'M')
  9.  
  10. 2) Получить упорядоченный по возрастанию список названий товаров, поставляемых поставщиком с ID
  11.  
  12.     SELECT Name
  13.     FROM Production.Product
  14.     WHERE ProductID IN
  15.         (SELECT PV.ProductID
  16.         FROM Purchasing.ProductVendor AS PV
  17.         WHERE PV.VendorID IS NOT NULL)
  18.  
  19.  
  20. 3) Для каждого типа кредитного рейтинга посчитать количество поставщиков, которые находятся в городе ‘New York’
  21.  
  22.     SELECT CreditRating, COUNT(VendorID)
  23.     FROM Purchasing.Vendor
  24.     WHERE VendorID IN
  25.         (SELECT VendorID
  26.         FROM Purchasing.VendorAddress
  27.         WHERE AddressID IN
  28.             (SELECT AddressID
  29.             FROM Person.Address
  30.             WHERE City = 'New York'))
  31.     GROUP BY CreditRating
  32.  
  33. 4) Получить идентификационные номера товаров и рекламных акций для заказов, сделанных 27 июля 2004 года
  34.  
  35.     SELECT DISTINCT ProductID, SpecialOfferID
  36.     FROM Sales.SalesOrderDetail
  37.     WHERE SalesOrderID  IN
  38.         (SELECT SOH.SalesOrderID
  39.         FROM Sales.SalesOrderHeader AS SOH
  40.         WHERE SOH.OrderDate = '27 Jul 2004')
  41.  
  42. 5) Получить список идентификационных номеров сотрудников, чье количество дней отпуска по болезни меньше, чем среднее количество дней отпуска по болезни по занимаемой ими должности
  43.  
  44.     SELECT E1.EmployeeID
  45.     FROM HumanResources.Employee AS E1
  46.     WHERE E1.SickLeaveHours <
  47.         (SELECT AVG(E2.SickLeaveHours)
  48.         FROM HumanResources.Employee AS E2
  49.         WHERE E2.Title = E1.Title)
  50.  
  51. 6) Вычислить количество продуктов, для которых количества единиц товара в заказе больше среднего количества единиц товара в заказе для рекламной акции с ID = 1
  52.  
  53.     SELECT COUNT(SOD1.ProductID)
  54.     FROM Sales.SalesOrderDetail AS SOD1
  55.     WHERE SOD1.OrderQty >
  56.         (SELECT AVG(SOD2.OrderQty)
  57.         FROM Sales.SalesOrderDetail AS SOD2
  58.         WHERE SpecialOfferID = 1)
  59.  
  60. 7) Получить список городов, в которых есть хотя бы один поставщик с кредитным рейтингом 5
  61.  
  62.     SELECT DISTINCT A.City
  63.     FROM Person.Address AS A
  64.     WHERE A.AddressID IN
  65.         (SELECT VA.AddressID
  66.         FROM Purchasing.VendorAddress AS VA
  67.         WHERE VA.VendorID IN
  68.             (SELECT V.VendorID
  69.             FROM Purchasing.Vendor AS V
  70.             WHERE V.CreditRating = 5))
  71.  
  72. 8) Получить список городов, в которых есть только один поставщик
  73.  
  74.     SELECT DISTINCT A.City
  75.     FROM Person.Address AS A
  76.     WHERE A.AddressID IN
  77.         (SELECT VA.AddressID
  78.         FROM Purchasing.VendorAddress AS VA
  79.         WHERE VA.VendorID NOT IN
  80.             (SELECT VA2.VendorID
  81.             FROM Purchasing.VendorAddress AS VA2
  82.             WHERE VA2.VendorID < VA.VendorID))
  83.  
  84. 9) Получить данные (идентификационный номер) о поставщиках, поставляющих больше одного продукта для дорожной линейки велосипедов
  85.  
  86.     SELECT DISTINCT PV.VendorID
  87.     FROM Purchasing.ProductVendor AS PV
  88.     WHERE PV.ProductID IN
  89.         (SELECT P.ProductID
  90.         FROM Production.Product AS P
  91.         WHERE P.ProductLine = 'R' AND
  92.             PV.ProductID NOT IN
  93.             (SELECT P2.ProductID
  94.             FROM Production.Product AS P2
  95.             WHERE P2.ProductID < P.ProductID AND P2.ProductLine = 'R'))
  96.  
  97. 10) Получить список идентификационных номеров покупателей, для которых город в адресе выставления счета не соответствует городу в адресе доставки товара (без использования IN)
  98.  
  99.     SELECT SC.CustomerID
  100.     FROM Sales.Customer AS SC
  101.     WHERE SC.CustomerID = ANY
  102.         (SELECT SOH.CustomerID
  103.         FROM Sales.SalesOrderHeader AS SOH
  104.         WHERE
  105.             (SELECT PA1.City
  106.             FROM Person.Address AS PA1
  107.             WHERE SOH.BillToAddressID = PA1.AddressID)
  108.             <>
  109.             (SELECT PA2.City
  110.             FROM Person.Address AS PA2
  111.             WHERE SOH.ShipToAddressID = PA2.AddressID))
  112.  
  113. 11) Получить данные (идентификационный номер) о заказчиках, для которых средняя стоимость заказа выше стоимости заказа от 27.07.2004
  114.  
  115.     SELECT SC.CustomerID
  116.     FROM Sales.Customer AS SC
  117.     WHERE CustomerID IN
  118.         (SELECT SOH.CustomerID
  119.         FROM Sales.SalesOrderHeader AS SOH
  120.         GROUP BY SOH.CustomerID
  121.         HAVING AVG(SOH.SubTotal) > ANY
  122.             (SELECT SOH2.SubTotal
  123.             FROM Sales.SalesOrderHeader AS SOH2
  124.             WHERE SOH2.OrderDate = '27 Jul 2004' AND SOH2.CustomerID = SOH.CustomerID))
  125.  
  126. 12) Найти тех производителей (идентификационный номер) товаров горной линейки, которые не производят товары дорожной линейки
  127.  
  128.     SELECT DISTINCT PV.VendorID
  129.     FROM Purchasing.ProductVendor AS PV
  130.     WHERE EXISTS
  131.         (SELECT *
  132.         FROM Production.Product AS P
  133.         WHERE P.ProductLine = 'M' AND PV.ProductID = P.ProductID)
  134.     AND NOT EXISTS
  135.         (SELECT *
  136.         FROM Production.Product AS P
  137.         WHERE P.ProductLine = 'R' AND PV.ProductID = P.ProductID)
  138.  
  139.  
  140. 13) Получить информацию о количестве заказов на суммы больше 150000 для каждого заказчика (идентификационный номер)
  141.  
  142.     SELECT SOH.CustomerID, COUNT(
  143.         CASE WHEN SOH.SubTotal > 150000
  144.         THEN 1
  145.         ELSE NULL
  146.         END)
  147.     FROM Sales.SalesOrderHeader AS SOH
  148.     GROUP BY CustomerID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement