【发布时间】: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