sql - 在雪花中将每月数据分解为每日数据
问题描述
这个问题类似于此处发布的问题:将每月数据分解为每日
但是,我正在尝试使用 Snowflake 来实现这一目标。以下是一些示例数据:
+--------------------+----------+---------------------------+----------+---------------+--------+
| ID | METRIC_C | OPPORTUNITY_RECORD_TYPE_C | REGION_C | METRIC_DATE_C | GOAL_C |
+--------------------+----------+---------------------------+----------+---------------+--------+
| a0c0W00000P180rQAB | MQL | Buyer: New | Europe | 2020-11-01 | 227 |
| a0c0W00000P181UQAR | Won | Buyer: New Europe | 2020-02-01 | 1 |
| a0c0W00000P180yQAB | SAL | Buyer: New | Europe | 2020-06-01 | 34 |
+--------------------+----------+---------------------------+----------+---------------+--------+
基本上,我希望 ID、METRIC_C、OPPORTUNITY_RECORD_TYPE_C、REGION_C 值重复,并且整个月都有日期值。目标值应除以每月的天数。我似乎无法让代码在雪花中工作。这是我到目前为止所拥有的:
with cte as
(select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C, GOAL_C
from GOAL_C
where METRIC_DATE_C > '2019-12-31'
union all
select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, dateadd(d, 1, METRIC_DATE_C) METRIC_DATE_C, GOAL_C
from cte
where datediff(m,METRIC_DATE_C,dateadd(d, 1, METRIC_DATE_C))=0
and METRIC_DATE_C > '2019-12-31'
)
select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C,
1.0*GOAL_C / count(*) over (partition by ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C) GOAL_C
from cte
order by 1,2,3,4,5
该代码似乎没有将月份分成几天。任何帮助将非常感激!
解决方案
您的代码很好,只需对雪花语法稍作调整即可完成工作。干得好:
with cte as
(select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C, GOAL_C
from DB_NM.SCHEMA_NM.TABLE_NM
where METRIC_DATE_C > '2019-12-31'
union all
select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, dateadd(day, 1, METRIC_DATE_C) METRIC_DATE_C, GOAL_C
from cte
where datediff(month,METRIC_DATE_C,dateadd(day, 1, METRIC_DATE_C))=0
and METRIC_DATE_C > '2019-12-31'
)
select ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C,
1.0*GOAL_C / count(*) over (partition by ID, METRIC_C, OPPORTUNITY_RECORD_TYPE_C, REGION_C, METRIC_DATE_C) GOAL_C
from cte
order by 1,2,3,4,5
;
谢谢
推荐阅读
- excel - 如何保留 vba 函数的输入参数中的换行符正确返回它?
- c# - 单击 Href 按钮硒
- java - 使用按钮 OnClickListener 设置 TalkBack 焦点
- java - 如何将对象转换为自定义 DTO
- google-admin-settings-api - 找不到:安全性 > 高级设置 > 管理 API 客户端访问
- java - 如何检查 ResultSet 中是否存在字段?
- java - 找出两个单词中哪个首先出现在字符串中
- mysql - NodeJS - MySQL 查询
- node.js - 我应该在数据库中保留多少个网络推送订阅对象?
- python - 如果可能的话,你能让我的代码更干净吗?