【发布时间】:2018-02-21 22:32:07
【问题描述】:
以下查询采用application_date 并给出申请月份的最后一天(cohort)和申请周的星期日(first_week):
select
cast(last_day(application_date) as date) end as cohort,
cast(dateadd(day, -(datepart(dow, application_date)), application_date) as date) first_week
from table
这非常适合我正在尝试做的事情,但是在 cohort 月份 first_week 月份的情况下,我想将 first_week 舍入到下个月的第一天(= cohort 月)。
当前输出示例:
application_date cohort first week
1/2/18 1/31/18 1/31/17
1/5/18 1/31/18 1/31/17
1/7/18 1/31/18 1/7/18
1/13/18 1/31/18 1/7/18
2/1/18 2/28/18 1/28/18
预期输出:
application_date cohort first week
1/2/18 1/31/18 1/1/18
1/5/18 1/31/18 1/1/18
1/7/18 1/31/18 1/7/18
1/13/18 1/31/18 1/7/18
2/1/18 2/28/18 2/1/18
谢谢!
【问题讨论】:
-
如果第一周是
12/30/2017怎么办? -
@maSTAShuFu 这不可能发生。
first_week可以是 12/31/2017 或 12/24/2017 或 1/7/2017 等,但不能是 12/30/2017,因为first_week的定义是application_date所在周的星期日。如果你的意思是如果application_date是 12/30/2017 那么first_week将是 12/24/2017,这不需要调整。 -
我建议展示更多示例以便更好地理解
-
@maSTAShuFu 确定,已更新
-
为什么 1/7/18 第一周是 1/7 也是 1/13?.. 能否请您包括第一周背后的逻辑。
标签: sql amazon-redshift