SQL查询以基于日期创建字段

我有一个数据集,其中id依次经过阶段A到D(A到B,B到C和C到D)。

我有一个时间戳,用于跟踪id进入特定阶段的时间。这是我的数据的样子

SQL查询以基于日期创建字段

因此,我有兴趣创建一个名为“状态”的字段,该字段显示根据A的时间戳转换的B,C,D的数量

例如;

8月19日的数字'A's = 7

A的时间戳为19年8月(与Date_B下的日期无关)= 5 的'B'的数量

A的时间戳为19年8月(与Date_C下的日期无关)= 5 的'C'的数量

A的时间戳为19年8月(与Date_D下的日期无关)= 5时,转换的'D'的数量

我尝试使用全部联合,,但其实时为我提供了“状态” ,其ID为1的“ date_B”获得的日期为9月19日,而不是8月'19。这是我使用的查询;

SELECT id,CAST (Date_A AS DATE) AS 'Pivot Date','A' AS 'Status'
FROM table1

UNION ALL

SELECT id,CAST (Date_B AS DATE) AS 'Pivot Date','B' AS 'Status'
FROM table1

UNION ALL

SELECT id,CAST (Date_C AS DATE) AS 'Pivot Date','C' AS 'Status'
FROM table1

UNION ALL

SELECT id,CAST (Date_D AS DATE) AS 'Pivot Date','D' AS 'Status'
FROM table1

有人可以指出我正确的方向吗?

谢谢!

leehomspeed 回答:SQL查询以基于日期创建字段

我不确定这是否是您想要的,但是请尝试以下操作:

SELECT
    *,-- or only id or whatever
    COUNT(date_a) OVER (PARTITION BY date_trunc('month',date_a)) AS a_of_the_month,COUNT(date_b) OVER (PARTITION BY date_trunc('month',date_a)) AS already_converted_to_b,COUNT(date_c) OVER (PARTITION BY date_trunc('month',date_a)) AS already_converted_to_c,COUNT(date_d) OVER (PARTITION BY date_trunc('month',date_a)) AS already_converted_to_d
FROM table1;

也许您只想要月份和数字:

SELECT
    date_trunc('month',date_a),COUNT(date_a) AS a_of_the_month,COUNT(date_b) AS already_converted_to_b,COUNT(date_c) AS already_converted_to_c,COUNT(date_d) AS already_converted_to_d
FROM table1
GROUP BY date_trunc('month',date_a);

在两种情况下,如果必须始终设置COUNT(date_a),也可以将COUNT(*)替换为date_a

本文链接:https://www.f2er.com/3148679.html

大家都在问