我的查询给出了结果:
select namee, obligatory,Lag(obligatory, 1) OVER (ORDER BY namee) lag_test,
row_number() over (partition by obligatory order by namee) nr from test_data
name obligatory lag_test nr
--------------------------------------
aaa 2015-11-21
aaa 2015-11-20 2015-11-21 1
aaa 2015-11-23 2015-11-20 1
aaa 2015-11-21 2015-11-23 1
aaa 2015-11-20 2015-11-21 2
bbb 2015-11-21 2015-11-23 4
bbb 2015-11-21 2015-11-21 3
.
.
我想得到的结果是'滞后'对于每个后续组都适用于第一组,如果它是可行的, row_number'每组的功能正常,我该怎么办
我的预期结果:
name obligatory lag_test nr
--------------------------------------
aaa 2015-11-21 1
aaa 2015-11-20 2015-11-21 2
aaa 2015-11-23 2015-11-20 3
aaa 2015-11-21 2015-11-23 4
aaa 2015-11-20 2015-11-21 5
bbb 2015-11-21 1
bbb 2015-11-21 2015-11-21 2
.
.
答案 0 :(得分:1)
使用分析函数时,partition by
子句告诉数据库如何对数据进行分组。您的order by
子句告诉数据库如何在组内订购数据。
我猜你想要
select namee,
obligatory,
lag(obligatory) over (partition by namee order by obligatory) last_obligatory,
row_number() over (partition by namee order by obligatory) rn
from test_data
这会按namee
将数据分组。然后,它会在每个组中按obligatory
排序。最后,它会根据组内行的顺序计算上一个obligatory
和row_number
。