(czyli każdemu miastu z pierwszej odpowiada kilka wpisów w drugiej tabelce).
chcę stworzyć ranking miast od tego które przynosi najwięcej profitów, do tego, które przynsi najmniej.
Napisałem:
SELECT s.city, sum(sf.profit) sumka FROM sales_fact sf JOIN store s ON sf.store_key = s.store_key WHERE s.region='East' GROUP BY s.city ORDER BY sumka DESC
ale chciałbym to zrealizować z wykorzystaniem rank().
Moja próba:
SELECT s.city, rank() over(partition BY s.city ORDER BY sum(sf.profit) DESC) FROM sales_fact sf JOIN store s ON sf.store_key = s.store_key WHERE s.region='East'
ale niestety tak nie działa...jakieś pomysły?
------UPDATE-----
działa:
SELECT s.city, sum(sf.profit), rank() over (ORDER BY sum(sf.profit) DESC ) pozycja FROM product p JOIN sales_fact sf ON p.product_key=sf.product_key JOIN store s ON sf.store_key = s.store_key GROUP BY s.city