gpt4 book ai didi

sql - 如何根据前一行创建列?

转载 作者:行者123 更新时间:2023-12-01 02:36:42 25 4
gpt4 key购买 nike

我有下表:

id  type
1 NULL
2 A
3 NULL
4 NULL
5 A
6 NULL
7 B
8 A
9 B
10 NULL

我想创建一个列,如果存在,则每一行都采用当前状态,如果不采用上一列的状态。
基本上想得到这个:
id  type   new_type
1 NULL NULL -- firs one no previous so it can only be null
2 A A -- current type A so take it
3 NULL A -- no type so take the new_type of previous
4 NULL A
5 A A
6 NULL A
7 B B
8 A A
9 B B
10 NULL B

我知道我在这里需要窗口函数,但我不知道窗口函数如何引用“进行中”的列,基本上窗口函数需要同时引用 typenew_type但是 new_type尚不存在..这是输出。

这如何在 SQL/Presto 中完成?

最佳答案

Presto 全面支持窗口函数。在这里,您可以使用 lag()ignore nulls替换选项 null列中的值 type :

select 
id,
type,
coalesce(
type,
lag(type ignore nulls) over(order by id)
) new_type
from mytable

关于sql - 如何根据前一行创建列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59962707/

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