mam tabelkę z miastami i drugą z profitami, jakie każde miasto przyniosło w różnych latach
(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:
  1. SELECT s.city, sum(sf.profit) sumka
  2. FROM sales_fact
  3. sf JOIN store s ON sf.store_key = s.store_key
  4. WHERE s.region='East' GROUP BY s.city ORDER BY sumka DESC


ale chciałbym to zrealizować z wykorzystaniem rank().
Moja próba:
  1. SELECT s.city,
  2. rank() over(partition BY s.city ORDER BY sum(sf.profit) DESC)
  3. FROM sales_fact
  4. sf JOIN store s ON sf.store_key = s.store_key
  5. WHERE s.region='East'

ale niestety tak nie działa...jakieś pomysły?

------UPDATE-----
działa:
  1. SELECT s.city,
  2. sum(sf.profit),
  3. rank() over (ORDER BY sum(sf.profit) DESC ) pozycja
  4.  
  5. FROM product
  6. p JOIN sales_fact sf ON p.product_key=sf.product_key
  7. JOIN store s ON sf.store_key = s.store_key
  8. GROUP BY s.city