繁体   English   中英

Redshift 将 UNIX 时间戳转换为 YYYYMMDD,收集累计计数,并按日期分组

[英]Redshift Convert UNIX Timestamp to YYYYMMDD, Collect Cumulative Count, and Group by Date

这里发生了一些事情。 我在下面列出我的逻辑:

  1. 选择分类列

  2. 转换 unix 时间戳:

    date_trunc('day', TIMESPAMP 'epoch' + time_column * INTERVAL '1 second'

  3. 收集分类列的累计计数

    计数(categorical_column)OVER(PARTITION BY categorical_column ORDER BY date ASC ROW UNBOUNDED PRECEEDING)

  4. GROUP BY date_column, categorical_column

我遇到的问题是,当一天多次发生时,我每天只能得到 1 次计数。 有什么建议么?

SELECT cat_col_1, 
       cat_col_2, 
       date_trunc('day', TIMESTAMP 'epoch' + time_col * INTERVAL '1 second'), 
       count(cat_col_1) OVER (PARTITION BY cat_col_1 ORDER BY time_col ROW UNBOUNDED PRECEEDING)
FROM example_table
GROUP BY time_col, cat_col_1, cat_col_2

答案:将 count(cat_col_1) 包裹在 sum() 中

SELECT cat_col_1, 
       cat_col_2, 
       date_trunc('day', TIMESTAMP 'epoch' + time_col * INTERVAL '1 second'), 
       sum(count(cat_col_1)) OVER (PARTITION BY cat_col_1 ORDER BY time_col ROW UNBOUNDED PRECEEDING)
FROM example_table
GROUP BY time_col, cat_col_1, cat_col_2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM