SQL分析函数:对多个分区进行排名

时间:2017-10-15 22:56:51

标签: sql rank analytic-functions

一位朋友要求协助以下查询(有关其他说明,请参阅图片):

“我们需要生成基于销售商品数量的销售排名,并按产品计算。换句话说,对于给定产品,销售商品数量最多的年份将排名为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

我错过了什么吗?谢谢。

sales-rank

1 个答案:

答案 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的降序排序。