滞后函数填充丢失的行

时间:2019-04-16 06:59:52

标签: postgresql

我正试图提出一个SQL来获取Postgres 9.6数据库表中的数据。

Table Data 我尝试了Windows函数的各种变体,但是这些变体似乎都不起作用,

基于输入列C3,我要投影第四列C4,输出应类似于以下内容。

Final Desired output

如何使用SQL完成此操作?该表最多可包含1亿条记录。

3 个答案:

答案 0 :(得分:0)

我可以使用以下SQL来获得所需的输出

,t2为(从Test_table中选择c1,c3,其中c3不为空) 更新Test_table t1 设置c3 = t2.c3 从t2开始 其中t1.c1 <= t2.c1 并且t1.c3为null;

选择 c1 ,c2 ,C3 ,dense_rank()超过(按c3排序)cr 来自Test_table 按c1排序;

答案 1 :(得分:0)

使用窗口函数在按c1降序排列的窗口中选择最小的c3,但按c1升序对整个输出进行排序:

select c1, c2, c3, min(c3) over (order by c1 desc) as c4 from t order by c1;

答案 2 :(得分:0)

我运行了您提供的SQL,并得到了此输出。我以为这张照片描述了我真正想要的。希望显示来自运行SQL的输出以及所需的输出可能会有所帮助。

SQL output from your query and desired output