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只是一种天才。。。这就是我错过的。非常感谢。