SQL tutorial. AdventureWorks exercises. SQL SERVER.
Baza: AdventureWorks
Zadanie nr: 35
Treść: Wyświetl klienta/ów który złożył największą liczbę zamówień.
– jeżeli więcej klientów złożyło taką samą liczbę zamówień wyświetl wszystkich
– Wyniki posortuj id_klienta (rosnąco)
– policz tylko te zamówienia które są związane z jakimś sklepem
Wyniki wyświetl w formacie: identyfikator klienta, nazwa sklepu, liczba zamówień.
Polecenia/funkcje w zapytaniu: SELECT, SELECT TOP 1, FROM, GROUP BY, ORDER BY, SUM(), COUNT()
Rozwiązanie:
Pomocniczy schemat
Zapytanie:
DECLARE @ile int =
(
SELECT TOP 1
COUNT(*)AS LiczbaZamowien
FROM
Sales.SalesOrderHeader O
JOIN Sales.Customer C ON O.CustomerID = C.CustomerID
JOIN Sales.Store S ON C.StoreID = S.BusinessEntityID
GROUP BY
O.CustomerID, S.Name
ORDER BY
COUNT(*) DESC, O.CustomerID
);SELECT
O.CustomerID AS ID_Klienta
,S.Name AS NazwaSklepu
,COUNT(*)AS LiczbaZamowien
FROM
Sales.SalesOrderHeader O
JOIN Sales.Customer C ON O.CustomerID = C.CustomerID
JOIN Sales.Store S ON C.StoreID = S.BusinessEntityID
GROUP BY
O.CustomerID, S.Name
HAVING
COUNT(*)= @ile
ORDER BY
COUNT(*) DESC, O.CustomerID
Wynik: