Sql 分配一个组ID
这是我的数据Sql 分配一个组ID,sql,impala,Sql,Impala,这是我的数据 unic_key rnk fg_new_session 1011854 1 1 1012047 2 0 1012055 3 0 1012056 4 1 1012057 5 0 1018928 6 0 1018932 7 0 825651 56 1 826034 57 0 826048 58 0 我想添加第四列,其中包含以前的unic_键,其中fg_new_
unic_key rnk fg_new_session
1011854 1 1
1012047 2 0
1012055 3 0
1012056 4 1
1012057 5 0
1018928 6 0
1018932 7 0
825651 56 1
826034 57 0
826048 58 0
我想添加第四列,其中包含以前的unic_键,其中fg_new_session=1 order by rnk
产出将是:
unic_key rnk fg_new_session 4thCol
1011854 1 1 1011854
1012047 2 0 1011854
1012055 3 0 1011854
1012056 4 1 1012056
1012057 5 0 1012056
1018928 6 0 1012056
1018932 7 0 1012056
825651 56 1 825651
826034 57 0 825651
826048 58 0 825651
我想用解析函数来做,但我没能做到。
我想加入是唯一的办法 您可以像这样使用窗口函数
first\u value
和sum
:
select t.*,
first_value(unic_key) over (
partition by grp order by fg_new_session desc,
rnk
) the_new_column
from (
select t.*,
sum(fg_new_session) over (
order by rnk
) grp
from t
) t;
sum
此处用于创建组,然后first\u value
获取组中的第一个值(按照增加秩的顺序,并根据order by子句,它将在组中具有最大fg\u new\u会话)在这种情况下使用sum只是一种天才。。。这就是我错过的。非常感谢。