【发布时间】:2021-04-17 19:51:29
【问题描述】:
我有一个旧查询,我正在其中查找六周的数据,如下所示。在我的以下 AND 条件下,我获得了过去六周的数据,并且在 2020 中间和结束时运行良好。但自从2021 开始后,由于我正在用 6 做明显的减法,这停止了工作。
AND data.week_col::integer BETWEEN DATE_PART(w, CURRENT_DATE) - 6 AND DATE_PART(w, CURRENT_DATE) - 1
上述查询中有一个错误,因此它在 2021 年停止工作。如何更改上述条件,以便它可以全年正常工作,并提供过去 6 周的数据。
更新
以下是我正在运行的查询:
select *,
dateadd(d, - datepart(dow, trunc(CONVERT_TIMEZONE('UTC','PST8PDT',client_date))), trunc(CONVERT_TIMEZONE('UTC','PST8PDT',client_date)) + 6) as day,
date_part(week, day) as week_col
from holder data
where data.week_col::integer BETWEEN DATE_PART(w, CURRENT_DATE) - 6 AND DATE_PART(w, CURRENT_DATE) - 1
client_date 列具有这样的值 - 2021-01-15 21:30:00.0。从那里我得到day 列的值,从day 列我得到值
week_col列如上图。
week_col 列的值类似于 53、52 ...。通常是周数。
由于我的AND 条件,我只获取1 周的数据,但从技术上讲,我想要49、50、51、52、53 和1 的数据为六个星期过去了。我可以在这里使用day 列来纠正过去六周的情况吗?
【问题讨论】:
-
编辑您的问题并显示示例数据和所需结果。目前尚不清楚
data.week长什么样。 -
我们没有完整的图片来帮助您进行查询。如果您唯一的列是周,则该任务是不可能的。它不再起作用的原因是今年我们在第 3 周,而您基本上是在 -3 和 2 之间选择周。向我们展示了更多您的代码、表结构等。
-
好的,我现在用我的查询和一些额外列的详细信息更新了它。
-
您的数据库中有 calendar'esqe 表吗?意思是一个表,其中包含一组逻辑上的连续日期,以及可能的周数值。
-
@RossBush 很遗憾,我们没有。
标签: sql amazon-web-services amazon-redshift