我知道按销售量排序我可以删除分区;但是分区函数在做什么,这会使所有等级的值都输出为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
答案 0 :(得分:3)
Partition by为查询中的数据创建Group。在查询中,您已进行分区,即按月份对数据进行排名。因此,每行显示为1,并且您已经将数据分组了。
答案 1 :(得分:0)
您每个月只有一条记录。您将从每个月开始进行排名枚举,因此每个排名都精确地为“ 1”。
partition by
的工作方式。重新启动枚举。