Tagi: year

Zadanie 14.

1. Utwórz wspólne wyrażenie tablicowe (CTE) nazwane ShortOrd, które zwróci ID zamówienia, ID klienta, ID pracownika, datę zamówienia oraz ID przewoźnika (z tabeli Orders).

2. Utwórz kwerendę zewnętrzną, opartą na powyższym wyrażeniu, która zwróci ID zamówienia, ID klienta, wartość zamówienia oraz nazwę przewoźnika, dotyczące zamówień złożonych w 1996 roku. (Uwaga: potrzebne będzie złączenie wyrażenia tablicowego z tabelą Shippers oraz widokiem Order Subtotals).

Baza: Northwind, Tabele: dbo.Orders, dbo.Shippers, dbo.Order Subtotals (widok), Kolumny: OrderID, CustomerID, EmployeeID, OrderDate, ShipVia, Subtotal, CompanyName, Wynik: 152 rows

s14

 

 

 

Rozwiązanie

WITH ShortOrd AS
(
SELECT OrderID, CustomerID, EmployeeID, OrderDate, ShipVia
FROM dbo.Orders
)

SELECT so.OrderID, so.CustomerID, os.Subtotal as Sum, s.CompanyName as Shipper
FROM ShortOrd as so JOIN dbo.Shippers as s on so.ShipVia = s.ShipperID
JOIN dbo.[Order Subtotals] as os on so.OrderID = os.OrderID
WHERE YEAR(so.OrderDate) = '1996'
ORDER BY so.CustomerID;

[collapse]

Zadanie 28.

Podsumuj pracę przewoźników: podlicz, ile zamówień obsłużyli w każdym roku. W wyniku zaznacz, na którym miejscu jest dany przewoźnik w ilości obsłużonych zamówień.

Baza: Northwind, Tabele: dbo.Orders, dbo.Shippers, Kolumny: CompanyName, OrderDate, ShipVia, ShipperID, Wynik: 9 rows

37

Rozwiązanie

SELECT ROW_NUMBER() OVER(PARTITION BY YEAR(O.OrderDate) ORDER BY COUNT(*) DESC) as Nr, S.CompanyName, YEAR(O.OrderDate) as Year, COUNT(*) as Orders
FROM dbo.Orders as O
JOIN dbo.Shippers as S on O.ShipVia = S.ShipperID
GROUP BY S.CompanyName, YEAR(O.OrderDate)
ORDER BY Year, Orders DESC;

[collapse]

Zadanie 12.

Napisz kwerendę, która zwróci listę państw, do których dostarczono zamówienia w 1997 roku (nazwy państw nie mogą się powtarzać).

Baza: Northwind, Tabela: dbo.Orders, Kolumny: ShipCountry, ShippedDate, Wynik: 21 rows

17

Rozwiązanie

SELECT DISTINCT ShipCountry

FROM dbo.[Orders]

WHERE YEAR(ShippedDate) = '1997';

[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 7.

Pokaż wszystkich pracowników zatrudnionych w 1993 roku.

Baza: Northwind, Tabela: dbo.Employees, Kolumny: FirstName, LastName, HireDate, Wynik: 3 rows

11

Rozwiązanie

SELECT FirstName, LastName, HireDate
FROM dbo.Employees
WHERE YEAR(HireDate) = '1993'

— inna wersja: WHERE HireDate >= ‚19930101’ AND HireDate < ‚19940101’;

[collapse]

Zadanie 2.

Chcemy sprawdzić, ile zamówień było złożonych w każdym miesiącu każdego roku.

Baza: Northwind, Tabela: dbo.Orders, Kolumny: OrderDate, Wynik: 3 rows

4

Rozwiązanie

SELECT YEAR(OrderDate) as Rok, MONTH(OrderDate) as Miesiac, COUNT(*) as Zamowienia
FROM dbo.Orders
GROUP BY YEAR(OrderDate), MONTH(OrderDate)
ORDER BY Rok, Miesiac;

[collapse]