在Teradata-SQL中排名

时间:2015-03-12 21:50:07

标签: sql teradata

我正在尝试使用rank()over function对我的销售数据进行排名。这是我的代码:

Select 
Category as CAT
,units*cost as COST_SALES
,units*retail as RETAIL_COST
,units as UNITS_SOLD
,RANK() OVER (PARTITION BY 1 ORDER BY 3 DESC ) AS RANKING

from Table 

Where date between current_date-7 and current_date
group by 1 

当我得到我的结果时,它是无序的并且显示所有类别的等级1。

1 个答案:

答案 0 :(得分:0)

您无法在窗口函数中使用列引用。您需要明确命名列:

Select Category as CAT, units*cost as COST_SALES, units*retail as RETAIL_COST,
       units as UNITS_SOLD,
       RANK() OVER (PARTITION BY Categroy ORDER BY units*retail DESC ) AS RANKING
from Table 
Where date between current_date-7 and current_date
group by Category;