--1. Wyświetl najdroższe produkty w danej kategorii.
SELECT CategoryID, ProductName, UnitPrice FROM Products
WHERE UnitPrice IN (SELECT MAX(unitPrice) FROM Products GROUP BY CategoryID)
ORDER BY 1, 3 DESC
SELECT CategoryID, ProductName, UnitPrice FROM Products AS p1
WHERE UnitPrice IN (SELECT MAX(unitPrice) FROM Products AS p2 WHERE p2.CategoryID = p1.CategoryID)
ORDER BY 1, 3 DESC;
SELECT c.CategoryID, p.ProductName, p.UnitPrice FROM Categories AS c INNER JOIN
Products AS p ON c.CategoryID=p.CategoryID
WHERE UnitPrice IN (SELECT MAX(unitPrice) FROM Products AS p1 WHERE p1.CategoryID = c.CategoryID)
ORDER BY 1, 3 DESC;
--2. Znaleźć kategorię do której nie przypisano żadnego produktu
--1 wykorzystując operator JOIN
--2 zapytanie z podzapytaniem skorelowane --np. EXISTS lub NOT EXISTS
--3 zapytanie z podzapytaniem nieskorelowane
INSERT Categories (CategoryName) VALUES ('Kat1')
SELECT c.CategoryName FROM Categories AS c LEFT OUTER JOIN Products AS p ON c.CategoryID = p.CategoryID
WHERE (p.ProductName IS NULL);
SELECT CategoryName FROM Categories
WHERE NOT EXISTS (SELECT * FROM Products WHERE Products.CategoryID=Categories.CategoryID);
SELECT CategoryName FROM Categories
WHERE CategoryID NOT IN (SELECT DISTINCT CategoryID FROM Products WHERE CategoryID IS NOT NULL);
--3. Który z pracowników zrealizował największą liczbę zamówień, w każdym z lat funkcjonowania firmy.
WITH
TMP1 AS (SELECT e.LastName, YEAR(o.OrderDate) AS ROK, COUNT(DISTINCT o.OrderID) AS Liczba
FROM Employees AS e INNER JOIN orders AS o ON e.EmployeeID = o.EmployeeID
GROUP BY e.LastName, YEAR(o.OrderDate))
SELECT * FROM TMP1 WHERE Liczba IN (SELECT MAX(liczba) FROM TMP1 AS tmp2 WHERE tmp2.ROK = TMP1.ROK)
--4. Który z pracowników zrealizował zamówienia sumarycznie za najwyższą kwotę w danym roku.
--5. Jaki klient kupił za największą kwotę sumarycznie w każdym z lat funkcjonowania firmy.
--6. Znajdź faktury każdego z klientów opiewające na najwyższe kwoty.
--7. Podaj najlepiej sprzedające się produkty w każdej kategorii.
--8. Podaj jakiego towaru każdego z dostawców jest w magazynie na najwyższą kwotę.
--9. Podaj najlepiej sprzedający się produkt w każdym z roku i kwartale funkcjonowania firmy.
--10. W jaki dzień tygodnia była największa i najmniejsza sprzedaż.
--11. Tworzenie tabel na podstawie wyników polecenia: select * from products (SELECT INTO)
-- Dołóż do wcześniej utworzonej tabeli na podstawie zapytania jeszcze raz te same dane.
--12. Skasuj produkty należące do kategorii CAT1 (najpierw dodać 2 produkty bez kategorii, następnie nową kategorię CAT1 i przypisać --dodanym wcześniej produktom tą kategorię)
--1 wykorzystać zapytanie z podzapytaniem
--2 oraz zapytanie typu JOIN - jeśli się da
--13. Zmodyfikuj cenę produktów o 20% dla produktów należących do kategorii o nazwie CAT1.
--14. Podaj w pierwszej kolumnie ROK, w następnych kolumnach miesiące od 1 do 12.
--W kolejnych rekordach podajemy sprzedaż w danym roku w danym miesiącu. Wykorzystać funkcję COALESCE.
--15. Wyświetl najdroższe dwa produkty w danej kategorii (podajemy nazwę kategorii, nazwę produktu i jego cenę)
--16. Napisz kilka przykładowych zapytań wykorzystujących operator [ANY|SOME, ALL] na bazie Northwind. Zadaj pytania, na które odpowiadają dane przykłady.