【问题标题】:Need column comprised of data from date two weeks ago for comparison需要由两周前日期的数据组成的列进行比较
【发布时间】:2021-08-13 22:20:20
【问题描述】:

首先让我说我对 SQL/Snowflake 有点陌生,并且已经将查询放在一起大约 2 个月。我的某些查询语言可能并不理想,我完全理解是否有更好、更有效的方法来执行此查询。任何和所有输入表示赞赏。此外,此特定查询正在 Snowflake 中开发。

我当前的查询是基于 45 天的窗口按部门和日期提取客户量,从当前日期回顾 24 天,并根据预定的约会向前展望 21 天。每个日期都根据它在 45 天窗口内的位置进行分组:本周(今天到接下来的 7 天)、第 1 周(前瞻性第 8-14 天)和第 2 周(前瞻性第 15-21 天)。我一直在努力建立一个比较列,对于第 1 周或第 2 周组内的任何日期,将从前 14 天(第 1 周)或前 21 天(第2)但我无处可去。这种类型的列是否有最佳实践?附上当前输出的通用示例。请注意,示例输出中的“Prior Wk”列是手动填充的,旨在说明该列的理想工作方式。

我已经尝试了几种不同的 count(case...) 迭代,类似于下面列出的迭代;但是,“Prior Wk”列返回的是同一天的遭遇/预定遭遇的计数,而不是 14 天或 21 天前发生的那些。

Count(Case When datediff(dd,SCHED_DTTM,getdate()) 
      between -21 and -7 then 1 else null end
) as "Prior Wk"

我尝试使用如下所示的 IFF 语句,但没有返回值。

(IFF(ENCOUNTER_DATE > dateadd(dd,8,getdate()),
 count(case when ENC_STATUS in (“Phone”,”InPerson”) AND
 datediff(dd,ENCOUNTER_Date,getdate()) between 7 and 14 then 1 
 else null end), '0')
) as "Prior Wk"

还尝试创建和使用临时表(包括示例),但未能成功从临时表中提取信息,这些信息并未完全破坏我的遭遇/计划计数。请注意,对于这种方法,我只关注 14 天组,还没有开始研究 21 天/第 2 周组。我尝试使用临时表来解决围绕以下子句的问题(临时表别名:“Date1”):

CASE when AHS.GL_Number = "DATEVISIT1"."GL_NUMBER" AND 
  datevisit1.lookback14 = dateadd(dd,14,PE.CONTACT_Date)
then "DATEVISIT1"."ENC_Count" 
else null end 
as "Prior Wk"*

我非常感谢有关当前最佳实践的任何见解,这些最佳做法是将前期数据与当前期间数据一起放入列中。我对术语的任何滥用都不是故意的。

【问题讨论】:

    标签: sql snowflake-cloud-data-platform data-comparison


    【解决方案1】:

    我很难理解您的要求,但听起来您需要使用窗口函数https://docs.snowflake.com/en/sql-reference/functions-analytic.html,在这种情况下可能是 SUM 窗口函数。 LAG 窗口函数https://docs.snowflake.com/en/sql-reference/functions/lag.html 也可能会有所帮助

    【讨论】:

    • 对于我的问题不够明确,我深表歉意。您的建议非常有帮助,虽然我还没有完全解决我的问题,但我相信窗口函数在使用它们之后是正确的方向。谢谢。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多