我有一个数据集,其中id依次经过阶段A到D(A到B,B到C和C到D)。
我有一个时间戳,用于跟踪ID何时进入特定阶段。这是我的数据
因此,我有兴趣创建一个名为“状态”的字段,该字段显示根据A的时间戳转换的B,C,D的数量
例如;
19年8月月的'A's = 7
A的时间戳是19年8月(与Date_B下的日期无关)= 5时转换的“ B”数
A的时间戳为19年8月(与Date_C下的日期无关)= 5时转换的“ C”数
A的时间戳为19年8月(与Date_D下的日期无关)= 5时转换的“ D”数
我尝试使用union all,但是它实时显示了“状态”,这意味着ID 1下的“ date_B”获得的日期为9月19日,而不是19年8月。
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
有人可以指出我正确的方向吗?
谢谢!
我不确定这是否是您想要的,但是请尝试以下操作:
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
必须始终设置if,也可以用替换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句