Ćwiczenie 1. Oblicz wartość wszystkich zamówień w I kw. 1997 r.
Wskazówka: potrzebujemy dwóch tabel: [orders] i [order details]
select sum(unitPrice*quantity*(1-discount)) as Total
from Orders o join [Order Details] d on o.OrderID=d.OrderID
where OrderDate between '1997-01-01' and '1997-03-31'
Ćwiczenie 2. Jaki jest średni czas wysyłki ?
Wskazówka: średni czas wysyłki liczymy w dniach. Korzystamy z funkcji DATEDIFF i funkcji agregującej
select avg(DATEDIFF(day,OrderDate,ShippedDate)) from Orders;
Ćwiczenie 3. Ile jest produktów bez litery „e” w nazwie ?
select count(productID) from Products where ProductName not like '%e%';
Ćwiczenie 4. Oblicz wartość każdego zamówienia
select sum(UnitPrice*Quantity*(1-Discount)) as Total, OrderID from [Order Details]
group by OrderID;
ale warto zaokrąglić wynik do dwóch miejsc po przecinku, przecież to jest cena !
select round(sum(UnitPrice*Quantity*(1-Discount)),2) as Total, OrderID from [Order Details]
group by OrderID;
Ćwiczenie 5. Ile jest produktów na każdą literą alfabetu.
Wskazówka 1 : najpierw trzeba „wyciąć” pierwszą literę (LEFT) z nazwy każdego produktu.
Wskazówka 2: jeżeli w poleceniu SELECT jest funkcja agregująca i wyrażenie (lub kolumna/kolumny) to to wyrażenie (kolumna/kolumny) muszą znaleźć się w klauzuli GROUP BY
select left(ProductName,1) as litera, count(productID) as ile from Products
group by left(ProductName,1);
Ćwiczenie 6. Pogrupuj produkty wg grup cenowych.
select ProductName, UnitPrice,
case
when UnitPrice < 30 then 'tanie'
when UnitPrice >= 30 and UnitPrice <= 50 then 'srednie'
when UnitPrice > 50 and UnitPrice <= 80 then 'drogie'
when UnitPrice > 80 then 'b.drogie'
else 'inne'
end as opis
from Products
Ćwiczenie 7. Na podstawie ćwiczenia 6 wyświetl produkty z kategorii „drogie”.
Ćwiczenie 8. Który pracownik zrobił najwięcej zamówień ?
select LastName, FirstName, count(orderId) as IloscZamowien from Orders o inner join Employees e on o.EmployeeID=e.EmployeeID
group by LastName, FirstName order by IloscZamowien desc;
W powyższym zapytaniu wyniki są posortowane malejąco. Zastanów się czy można pokazać dane dla tylko jednego pracownika ?
