【发布时间】:2016-11-13 18:23:52
【问题描述】:
我正在尝试使用 Vertica 排名分析函数来创建一个按列分区的排名列,但仅包含系列中的记录。例如下面的查询在查询下面产生输出
select when_created, status
from tablea
when_created Status
1/1/2015 ACTIVE
3/1/2015 ACTIVE
4/1/2015 INACTIVE
4/6/2015 INACTIVE
6/7/2015 ACTIVE
10/9/2015 INACTIVE
我可以修改我的查询以包含一个排名列,该列会产生以下输出
select
when_created, status, rank() OVER (PARTITION BY status order by when_created) as rnk
from tablea
when_created Status rnk
1/1/2015 ACTIVE 1
3/1/2015 ACTIVE 2
4/1/2015 INACTIVE 1
4/6/2015 INACTIVE 2
6/7/2015 ACTIVE 3
10/9/2015 INACTIVE 3
但是我的目标是在系列被破坏时从排名开始,因此所需的输出是:
when_created Status rnk
1/1/2015 ACTIVE 1
3/1/2015 ACTIVE 2
4/1/2015 INACTIVE 1
4/6/2015 INACTIVE 2
6/7/2015 ACTIVE 1
10/9/2015 INACTIVE 1
有没有办法使用 RANK 函数来完成这项工作,或者在 vertica sql 中有其他方法吗?
谢谢, 本
【问题讨论】: