Autor Kategorii: Agnieszka Włodarczyk

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

Znajdź pracowników zatrudnionych między październikiem 1993 a marcem 1994. Wynik posortuj według daty zatrudnienia.

Baza: Northwind, Tabele: dbo.Employees, Kolumny: FirstName, LastName, HireDate, Wynik: 4 rows

7

Rozwiązanie

SELECT FirstName, LastName, HireDate
FROM dbo.Employees
WHERE HireDate >= '19931001' AND HireDate < '19940401'
ORDER BY HireDate;

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

Zadanie 3.

Znajdź 3 zamówienia o największej wartości.

Baza: Northwind, Tabela: dbo.Order Details, Kolumny: OrderID, UnitPrice, Quantity, Wynik: 3 rows

5

Rozwiązanie


SELECT OrderID, SUM(UnitPrice*Quantity) as Suma
FROM dbo.[Order Details]
GROUP BY OrderID
ORDER BY Suma DESC
OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY;

Można tu użyć również funkcji TOP (SELECT TOP(3)…).

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

Zadanie 2.

Napisz zapytanie, które pokaże nam wszystkie osoby kontaktowe z nazwiskiem zaczynającym się na ‘L’ (imię i nazwisko w bazie to jedna kolumna).

Baza: Northwind, Tabela: dbo.Customers, Kolumny: CustomerID, CompanyName, ContactName, Wynik: 6 rows

3

Rozwiązanie

SELECT CustomerID, CompanyName, ContactName
FROM dbo.Customers
WHERE ContactName LIKE '% L%';

[collapse]
Recent Entries »