为什么销售排名的每一行都输出1的值?

时间:2018-09-26 11:42:41

标签: sql oracle

我知道按销售量排序我可以删除分区;但是分区函数在做什么,这会使所有等级的值都输出为1?

select
trunc(sales_date,'MON') as sales_month,
sum(sales_amount) as Monthly_Sales,
rank() over (partition by trunc (sales_date,'MON') order by sum(sales_amount) desc) as Sales_Rank
from s
group by trunc(sales_date,'MON')
order by 1;


SALES_MON MONTHLY_SALES SALES_RANK
--------- ------------- ----------
01-JAN-15          5600          1
01-FEB-15         50880          1
01-MAR-15        126120          1
01-APR-15        118320          1
01-MAY-15          2280          1

2 个答案:

答案 0 :(得分:3)

Partition by为查询中的数据创建Group。在查询中,您已进行分区,即按月份对数据进行排名。因此,每行显示为1,并且您已经将数据分组了。

答案 1 :(得分:0)

您每个月只有一条记录。您将从每个月开始进行排名枚举,因此每个排名都精确地为“ 1”。

partition by的工作方式。重新启动枚举。