【发布时间】:2018-10-04 07:25:15
【问题描述】:
现在我有一个这样的红移表:
表 Project_team
Employee_ID Employee_Name Start_date Ranking Is_leader Is_Parttime_Staff
Emp001 John 2014-04-01 1 No No
Emp002 Mary 2015-02-01 2 No Yes
Emp003 Terry 2015-02-15 3 Yes No
Emp004 Peter 2016-02-05 4 No No
Emp004 Morris 2016-05-01 5 No No
最初没有员工排名。 我所做的是像这样使用 rank() 函数:
RANK() over (partition by Employee_ID,Employee_Name order by Start_date) as page_seq
但是,现在我想根据他们的状态来操纵排名。如果员工是领导者,那么他或她应该排在第一位。如果他或她是兼职员工,那么应该排在最后。表格应该是这样的:
Employee_ID Employee_Name Start_date Ranking Is_leader Is_Parttime_Staff
Emp003 Terry 2015-02-15 1 Yes No
Emp001 John 2014-04-01 2 No No
Emp004 Peter 2016-02-05 3 No No
Emp004 Morris 2016-05-01 4 No No
Emp002 Mary 2015-02-01 5 No Yes
我尝试使用 case 函数来像这样操作它
Case when Is_leader = true then Ranking = 1 else RANK() over (partition by Employee_ID,Employee_Name order by Start_date) End as page_seq.
但是它不起作用。
我需要根据其他列中的其他条件更改排名的过程是什么?
非常感谢!
【问题讨论】:
-
在相关窗口函数的over子句中使用
case expression。以下建议的解决方案使用此方法,但未说明实际解决方案。
标签: sql amazon-redshift ranking row-number