一位朋友要求协助以下查询(有关其他说明,请参阅图片):
“我们需要生成基于销售商品数量的销售排名,并按产品计算。换句话说,对于给定产品,销售商品数量最多的年份将排名为1,下一个销售商品的年份将排名2,依此类推“
我将以下SQL邮寄给他,但是他说所有行都返回1级
Select product, year, num_of_items_sold
RANK( ) OVER (PARTITION BY product, year ORDER BY num_of_items_sold) as sales_rank
from prod_sales
我错过了什么吗?谢谢。
答案 0 :(得分:2)
考虑到这个问题,在窗口函数中不需要year
似乎令人惊讶。它所关心的只是product
和销售的商品数量:
select product, year, num_of_items_sold
rank() over (partition by product
order by num_of_items_sold desc
) as sales_rank
另请注意order by
的降序排序。