SQL tutorial. AdventureWorks exercises. SQL SERVER.
Baza: AdventureWorks
Zadanie nr: 37
Treść: Oblicz i wyświetl wartość pierwszego i ostatniego zamówienia.
Polecenia/funkcje w zapytaniu: SELECT, SELECT TOP, FROM, ORDER BY, GROUP BY, JOIN, SUM()
Rozwiązanie:
Pomocniczy schemat
Zapytanie:
SELECT
'Pierwsze zamówienie' AS Info
,SUM(OD.OrderQty*OD.UnitPrice)AS Wartosc
FROM
(
SELECT TOP 1 O.SalesOrderID
FROM Sales.SalesOrderHeader O
ORDER BY O.OrderDate, SalesOrderID
) AS SQ
JOIN Sales.SalesOrderHeader OH ON SQ.SalesOrderID = OH.SalesOrderID
JOIN Sales.SalesOrderDetail OD ON SQ.SalesOrderID = OD.SalesOrderID
GROUP BY
OH.SalesOrderIDUNION ALL
SELECT
'Ostatnie zamówienie' AS Info
,SUM(OD.OrderQty*OD.UnitPrice)AS Wartosc
FROM
(
SELECT TOP 1 O.SalesOrderID
FROM Sales.SalesOrderHeader O
ORDER BY O.OrderDate DESC, SalesOrderID DESC
) AS SQ
JOIN Sales.SalesOrderHeader OH ON SQ.SalesOrderID = OH.SalesOrderID
JOIN Sales.SalesOrderDetail OD ON SQ.SalesOrderID = OD.SalesOrderID
GROUP BY
OH.SalesOrderID
Wynik: