如何在 Redshift 中结合演员表和日期最大值?

Posted

技术标签:

【中文标题】如何在 Redshift 中结合演员表和日期最大值?【英文标题】:How do I combine cast and date max in Redshift? 【发布时间】:2020-12-21 18:55:52 【问题描述】:

“日期”采用时间戳格式,并且在我的事件表中具有相同事件 ID 的重复项

如果我正在执行获取 max(date) 以删除重复项的子查询,我是否也可以将此 max 转换为日期而不是时间戳并将其包装在 max 中?希望避免做不必要的子查询谢谢。

【问题讨论】:

请向我们展示您的实际代码。样本数据和期望的结果也可能会有所帮助。 【参考方案1】:

当然,在将聚合函数应用于列之前,您可以转换列(通过强制转换或任何您喜欢的方式)。我不确定您如何删除重复项。看看使用GROUP BY的一些示例转换

with input (dt, v) AS (
    SELECT '2020-12-20T12:00'::timestamp, 10 UNION ALL
    SELECT '2020-12-20T13:00'::timestamp, 20 UNION ALL
    SELECT '2020-12-20T14:00'::timestamp, 30
)
select
       dt::date,
       max(dt),
       max(dt::date),
       max(date_trunc('month', dt)),
       max(last_day(dt)::timestamp),
       avg(v),
       count(*)
from input
group by 1
dt max max max max avg count
2020-12-20 2020-12-20 14:00:00.000000 2020-12-20 2020-12-01 00:00:00.000000 2020-12-31 00:00:00.000000 20 3

【讨论】:

以上是关于如何在 Redshift 中结合演员表和日期最大值?的主要内容,如果未能解决你的问题,请参考以下文章

需要从redshift中的日期列中划分月份和年份

如何在 Redshift 的结果中保留列别名中的大写和小写字母

如何从 Redshift 中的日期中提取纪元

Redshift - 带条件的最大窗口函数

Redshift - 在两个日期之间添加日期(月间隔)

尝试在 Redshift 中创建日期表