gpt4 book ai didi

sql - 用同一列中的先前值填充空值

转载 作者:行者123 更新时间:2023-11-29 13:15:20 25 4
gpt4 key购买 nike

Date            Name    Country  Channel    Joined_version    Expected_version
25/07/2018 Product 1 A ios 1 1
25/07/2018 Product 1 B ios null 1
25/07/2018 Product 1 C ios null 1
25/07/2018 Product 1 D play 2 2
25/07/2018 Product 2 A play 1.1 1.1

26/07/2018 Product 2 A ios null 1.1
26/07/2018 Product 2 B ios null 1.1
26/07/2018 Product 2 C ios null 1.1
26/07/2018 Product 2 D ios null 1.1

26/07/2018 Product 1 E ios 3 3

26/07/2018 Product 2 A play null 1.1

27/07/2018 Product 1 A ios null 3
27/07/2018 Product 1 B ios null 3
27/07/2018 Product 1 C ios null 3

在上表中,我从另一个有日期和版本的表中加入了版本。 (例如:26 日发布了适用于 ios 的产品 1 的新版本)

所以只有特定日期才会有版本号。剩余的单元格将为 Null。

我想用以前的版本名称填充空值,我将使用它来聚合其他字段。

版本取决于日期、 channel 和产品,取决于国家/地区。

我尝试了以下查询(来自 stackoverflow)及其各种排列。

    SELECT 
t.*,
FIRST_VALUE(joined_version) OVER (PARTITION BY val_part ORDER BY DATE, name,
channel) AS expected_version
FROM
(
SELECT
a.*,
COUNT(joined_version) OVER (ORDER BY DATE order by date, name, channel)
AS val_part
FROM table AS t ORDER BY date ASC
)

我的输出有很多缺失值(对于 expected_version),产品越多,缺失值越多。

请指出正确的方向,如果需要,我也会提供更多详细信息!

最佳答案

你已经标记了 mysql 和 postgres。

在 mysql 中,您可以为此使用 session 变量:

SELECT Date, Name, Channel, 
CASE WHEN Joined_version IS NULL THEN
@prev
ELSE
@prev := Joined_version
END AS Expected_version
FROM t1
order by Date, Name, Channel

关于sql - 用同一列中的先前值填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49974881/

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