Tagi: group by

Zadanie 18.

Który dostawca jakie produkty dostarcza?

Baza: Northwind, Tabele: dbo.Suppliers, dbo.Products, Kolumny: Country, CompanyName, ProductName, Wynik: 77 rows

23

Rozwiązanie


SELECT S.Country, S.CompanyName, P.ProductName

FROM dbo.Suppliers as S

JOIN dbo.Products as P on S.SupplierID = P.SupplierID

GROUP BY S.Country, S.CompanyName, P.ProductName

ORDER BY S.Country, S.CompanyName, P.ProductName;

[collapse]

Zadanie 17.

Policz wartości zamówień, zrealizowane przez każdego pracownika w 1997 roku.

Baza: Northwind, Tabele: dbo.Employees, dbo.Orders, dbo.Order Details, Kolumny: EmployeeID, LastName, Title, UnitPrice, Quantity, Wynik: 9 rows

22

Rozwiązanie

SELECT E.EmployeeID as ID, E.LastName, E.Title, SUM(OD.UnitPrice * OD.Quantity) as Sprzedaz

FROM dbo.Employees as E

JOIN dbo.Orders as O on E.EmployeeID = O.EmployeeID

JOIN dbo.[Order Details] as OD on O.OrderID = OD.OrderID

WHERE O.OrderDate >= '19970101' AND O.OrderDate < '19980101'

GROUP BY E.EmployeeID, E.LastName, E.Title

ORDER BY Sprzedaz DESC;

[collapse]

Zadanie 16.

Pokaż, ile zamówień obsłużył każdy z pracowników.

Baza: Northwind, Tabele: dbo.Employees, dbo.Orders, Kolumny: EmployeeID, FirstName, LastName, Title, OrderID, Wynik: 9 rows

21

Rozwiązanie

SELECT E.EmployeeID, E.FirstName, E.LastName, E.Title, COUNT(O.OrderID) as Orders FROM dbo.Employees as E JOIN dbo.Orders as O on E.EmployeeID = O.EmployeeID GROUP BY E.EmployeeID, E.FirstName, E.LastName, E.Title

ORDER BY Orders DESC;

[collapse]

Zadanie 14.

Stwórz raport sprzedażowy – oblicz wartość sprzedaży w każdym miesiącu 1997 roku.

Baza: Northwind, Tabele: dbo.Orders, dbo.Order Details, Kolumny: OrderDate, UnitPrice, Quantity, Wynik: 12 rows

19

Rozwiązanie

SELECT YEAR(O.OrderDate) as Rok, MONTH(O.OrderDate) as Miesiac, SUM(OD.UnitPrice * OD.Quantity) as Sprzedaz

FROM dbo.Orders as O

JOIN dbo.[Order Details] as OD on O.OrderID = OD.OrderID

WHERE O.OrderDate >= '19970101' AND  O.OrderDate < '19980101'

GROUP BY YEAR(O.OrderDate), MONTH(O.OrderDate)

ORDER BY Miesiac;

[collapse]

Zadanie 11.

Oblicz, ile było zamówień na towary każdej kategorii w skali każdego roku.

Baza: Northwind, Tabele: dbo.Orders, dbo.Order Details, dbo.Products, dbo.Categories, Kolumny: OrderDate, CategoryName, OrderID, Wynik: 24 rows

16

Rozwiązanie

SELECT YEAR(O.OrderDate) as Rok, C.CategoryName, Count(O.OrderID) as Zamowienia FROM dbo.Orders as O

JOIN dbo.[Order Details] as OD on O.OrderID = OD.OrderID

JOIN dbo.Products as P on P.ProductID = OD.ProductID

JOIN dbo.Categories as C on C.CategoryID = P.CategoryID

GROUP BY C.CategoryName, YEAR(O.OrderDate)

ORDER BY Rok, C.CategoryName;

[collapse]

Zadanie 6.

Dla zamówień o numerach 10250, 10657, 10710 i 10901 policz, ile produktów zawiera każde z nich, oblicz średnią cenę produktu i podaj kraj, do którego zostało dostarczone.

Baza: Northwind, Tabela: dbo.Order Details, dbo.Orders, Kolumny:  OrderID, UnitPrice, Quantity, ShipCountry, Wynik: 4 rows

10

Rozwiązanie

SELECT O.OrderID, COUNT(*) as Produkty, AVG(OD.UnitPrice*OD.Quantity) as Srednia, O.ShipCountry
FROM dbo.[Order Details] as OD
JOIN dbo.Orders as O on OD.OrderID = O.OrderID
GROUP BY O.OrderID, O.ShipCountry
HAVING O.OrderID IN(10250, 10657, 10710, 10901);

[collapse]

Zadanie 5.

Policz, ile zamówień złożył każdy z klientów. Wynik ułóż od największej ilości zamówień.

Baza: Northwind, Tabele: dbo.Customers, dbo.Orders, Kolumny: CustomerID, CompanyName, OrderID, Wynik: 91 rows

8

Rozwiązanie

SELECT C.CustomerID, C.CompanyName, COUNT(O.OrderID) as Zamowienia
FROM dbo.Customers as C
LEFT JOIN dbo.Orders as O on C.CustomerID = O.CustomerID
GROUP BY C.CustomerID, C.CompanyName
ORDER BY Zamowienia DESC

— W funkcji COUNT() wstawiłam zliczanie po OrderID zamiast *, ponieważ * zlicza wszystkie wiersze, również z wartością NULL gdyby się jakieś pojawiły – a teoretycznie mogą, bo mamy złączenie lewostronne – więc wynik mógłby być przekłamany.

[collapse]

Zadanie 4.

Wybierz te zamówienia, w których ilość zamówionych produktów wynosi 5 lub więcej.

Baza: Northwind, Tabela: dbo.Order Details, Kolumny: OrderID, Wynik: 37 rows

6

Rozwiązanie

SELECT OrderID, COUNT(*) as Ilosc
FROM dbo.[Order Details]
GROUP BY OrderID
HAVING COUNT(*) >= 5
ORDER BY Ilosc DESC;

[collapse]
« Starsze wpsiy Recent Entries »