gpt4 book ai didi

sql - 根据记录数据的变化重置行号

转载 作者:行者123 更新时间:2023-12-04 01:44:23 25 4
gpt4 key购买 nike

我有以下数据集

name  date  
x 2014-01-01
x 2014-01-02
y 2014-01-03
x 2014-01-04


我正在努力获得这个结果

name  date           row_num
x 2014-01-01 1
x 2014-01-02 2
y 2014-01-03 1
x 2014-01-04 1


我试图运行此查询

select name,
date,
row_number () over (partition by name order by date) as row_num
from myTBL


但不幸的是我得到了这个结果

name  date           row_num
x 2014-01-01 1
x 2014-01-02 2
y 2014-01-03 1
x 2014-01-04 3


请帮忙。

最佳答案

您需要确定一起出现的names组。您可以使用不同的行号来执行此操作。然后,使用grprow_number()进行分区:

select name, date,
row_number() over (partition by name, grp order by date) as row_num
from (select t.*,
(row_number() over (order by date) -
row_number() over (partition by name order by date)
) as grp
from myTBL t
) t


对于您的样本数据:

name  date         1st row_number   2nd      Grp
x 2014-01-01 1 1 0
x 2014-01-02 2 2 0
y 2014-01-03 3 1 2
x 2014-01-04 4 3 1


这应该使您了解其工作原理。

关于sql - 根据记录数据的变化重置行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com