SQL分析函数:在多个分区上排序

SQL分析函数:在多个分区上排序,sql,rank,analytic-functions,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_r

一位朋友就以下问题寻求帮助(更多说明请参见图片):

“我们需要根据售出的商品数量生成销售排名,并按产品计算。换句话说,对于给定的产品,售出商品数量最多的年份将排名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
我错过什么了吗?谢谢


鉴于这个问题,窗口函数中不需要
year
,这似乎令人惊讶。它只关心产品和售出的商品数量:

select product, year, num_of_items_sold
       rank() over (partition by product
                    order by num_of_items_sold desc
                   ) as sales_rank

还要注意,
顺序按降序排序

鉴于这个问题,窗口函数中不需要
年份
,这似乎令人惊讶。它只关心产品和售出的商品数量:

select product, year, num_of_items_sold
       rank() over (partition by product
                    order by num_of_items_sold desc
                   ) as sales_rank

还请注意,
orderby

使用
按产品顺序按商品数量划分\u selled desc
您使用的是什么数据库?甲骨文?博士后。感谢您使用的数据库是什么?甲骨文?博士后。谢谢你,你说得对。考虑到问题的语言,我设法把自己弄糊涂了。如果您知道有一个源代码提供了一个简洁的例子,说明秩函数被多个分区(不止一个字段)分割,您能告诉我这个例子吗。非常感谢。@JohnGagliano。我想你只是需要练习。窗口函数影响整行,
year
只是行中的另一列。戈登,你说得对。考虑到问题的语言,我设法把自己弄糊涂了。如果您知道有一个源代码提供了一个简洁的例子,说明秩函数被多个分区(不止一个字段)分割,您能告诉我这个例子吗。非常感谢。@JohnGagliano。我想你只是需要练习。窗口函数影响整行,
year
只是行中的另一列。