SQL Server, zapytanie łączące tabele i f-cja agregująca

 

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.