Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.43 KB | None | 0 0
  1. -- wypisz przewoźników wraz z liczbą wykonanych zamówień w latach 1996 - 1998 z podziałem na lata i wewnątrz lat na miesiące. wynik ograniczyć do przewoźników których suma zamówień w danym okresie jest wyższa niż średnia suma wykonanych zamówień dla wszystkich przewoźników w danym okresie
  2.  
  3. use Northwind;
  4. SELECT s.CompanyName, YEAR(o.OrderDate), MONTH(o.OrderDate), COUNT(*)
  5. FROM Shippers s
  6. JOIN Orders o ON o.ShipVia = s.ShipperID
  7. WHERE YEAR(o.OrderDate) BETWEEN 1996 AND 1998 AND (
  8.         SELECT SUM(UnitPrice * Quantity * (1 - Discount)) AS s1
  9.         FROM Orders o2
  10.         JOIN [Order Details] d ON d.OrderID = o2.OrderID
  11.         WHERE YEAR(o2.OrderDate) = YEAR(o.OrderDate) AND MONTH(o2.OrderDate) = MONTH(o.OrderDate) AND o2.ShipVia = s.ShipperID
  12. ) > (
  13.     SELECT AVG(s1) FROM (
  14.         SELECT SUM(UnitPrice * Quantity * (1 - Discount)) AS s1
  15.         FROM Orders o2
  16.         JOIN [Order Details] d ON d.OrderID = o2.OrderID
  17.         WHERE YEAR(o2.OrderDate) = YEAR(o.OrderDate) AND MONTH(o2.OrderDate) = MONTH(o.OrderDate)
  18.         GROUP BY o2.ShipVia
  19.     ) xdd
  20. )
  21. GROUP BY s.ShipperID, s.CompanyName, YEAR(o.OrderDate), MONTH(o.OrderDate);
  22.  
  23. -- wypisz imiona i nazwiska, adresy użytkowników biblioteki, jeśli są dzieckiem to wypisz adres rodzica, wypisz ilość aktualnie wypożyczonych książek, liczbę dni ponad due_date dla wypożyczonych książek, rozróżnić dorosłych i dzieci, dla dzieci które przetrzymują książki ponad due_date wypisać imie i nazwisko rodzica
  24.  
  25. use library;
  26. SELECT m.firstname, m.lastname, CONCAT(a.street, ' ', a.city, ' ', a.state, ' ', a.zip),
  27.     IIF(j.member_no IS NULL, 'dorosly', 'dziecko'), (
  28.         SELECT COUNT(*) FROM loan l1 WHERE l1.member_no = m.member_no  
  29.     ), (
  30.         SELECT SUM(IIF(DATEDIFF(day, GETDATE(), due_date) < 0, DATEDIFF(day, GETDATE(), due_date), 0)) FROM loan l2 WHERE l2.member_no = m.member_no
  31.     )
  32. FROM member m
  33. LEFT JOIN juvenile j on m.member_no = j.member_no
  34. LEFT JOIN adult a ON m.member_no = a.member_no OR j.adult_member_no = a.member_no;
  35.  
  36. -- wypisać nazwę klienta który złożył zamówienie 23/05/1997 i imię i nazwisko pracownika jeśli obsługiwał to zamówienie i ma podwładnych
  37.  
  38. use Northwind;
  39. SELECT c.CompanyName, e.FirstName, e.LastName
  40. FROM Customers c
  41. JOIN Orders o ON o.CustomerID = c.CustomerID
  42. LEFT JOIN Employees e ON e.EmployeeID = o.EmployeeID AND EXISTS (SELECT * FROM Employees e2 WHERE e2.ReportsTo = e.EmployeeID)
  43. WHERE OrderDate = '1997/05/23';
  44.  
  45. -- wypisać imię i nazwisko i adres użytkowników biblioteki ze stanu kalifornia którzy nigdy nie wypożyczyli książek oraz użytkowników którzy nie mają dzieci zapisanych do biblioteki i wypożyczyli ponad 3 książki
  46.  
  47. use library;
  48. SELECT m.firstname, m.lastname FROM member m
  49. JOIN adult a ON a.member_no = m.member_no
  50. LEFT JOIN juvenile j ON j.adult_member_no = m.member_no
  51. WHERE j.member_no IS NULL AND a.state = 'CA'
  52. AND (
  53.     SELECT COUNT(*) FROM loan l WHERE l.member_no = m.member_no
  54. ) + (
  55.     SELECT COUNT(*) FROM loanhist h WHERE h.member_no = m.member_no
  56. ) > 3;
  57.  
  58. -- wypisz użytkowników biblioteki którzy nie wypożyczyli w 1996 roku książki autorstwa samuela smile’a w tłumaczeniu arabskim na joinach i na selektach
  59.  
  60. use library
  61. SELECT DISTINCT m.firstname, m.lastname
  62. FROM member m
  63. JOIN loanhist h ON h.member_no = m.member_no
  64. JOIN copy c ON c.copy_no = h.member_no
  65. JOIN item i ON i.isbn = c.isbn
  66. JOIN title t ON c.title_no = t.title_no
  67. WHERE i.translation = 'Arabic' AND t.author = 'Samuel Smiles' AND YEAR(h.out_date) = 1996;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement