Witam,
Witam,
SELECT CategoryName, MIN(unitprice) AS 'cena_minimalna'
FROM Categories c
JOIN Products p ON c.CategoryID = p.CategoryID
GROUP BY CategoryName
Takie zapytanie wyświetli najniższą cenę w danej kategorii.
Brakuje jeszcze informacji dla jakiego produktu została owa najniższa cena osiągnięta.
Czyli problem jest taki: http://stackoverflow.com/questions/14880313/sql-get-other-rows-from-aggregate-function
SELECT p.ProductName, c.CategoryName, p.UnitPrice
FROM Categories AS c
JOIN Products AS p
ON c.CategoryID = p.CategoryID
JOIN (
SELECT CategoryName, MIN(unitprice) AS 'cena_minimalna'
FROM Categories c
JOIN Products p ON c.CategoryID = p.CategoryID
GROUP BY CategoryName
) AS s
ON c.CategoryName = s.CategoryName
AND p.UnitPrice = s.cena_minimalna
ORDER BY p.UnitPrice;
Mi do tego zadania bardzo pasuje funkcja okienkowa.
Czyli min(cena) z over(partition by product_category …)
http://technet.microsoft.com/pl-pl/library/ms189461.aspx
Będzie szybka i ładna.