假设我在 Snowflake 中有一个表,其中字段
delivery_date
,格式为 DATETIME,而 daily_volume
格式为 INT。 Daily_volume
遵循每 10 天重复一次的模式。
我如何查询此表以比较今天的
daily_volume
与 10 天周期中同一点的历史平均值?
我的第一直觉是做类似的事情:
WHERE MOD(current_date(),10) = MOD(delivery_date,10)
然后取平均值,但是Snowflake似乎没有任何简单的方法将DATETIME转换为INT,以便我可以使MOD函数工作。
ChatGPT 建议了类似的内容
WHERE MOD(DATEDIFF('days', '1970-01-01'::DATE, current_date), 10)
= MOD(DATEDIFF('days', '1970-01-01'::DATE, delivery_date), 10)
我猜这可行,但我猜还有更好的方法吗?
计算时间“片段”的开始或结束,其中片段的长度是标准时间单位(分钟、小时、天等)的倍数。
此函数可用于计算数据可分类到的固定宽度“桶”的开始和结束时间。
SELECT
TIME_SLICE("DATE", 10, 'DAY', 'START') AS START_OF_SLICE
,TIME_SLICE("DATE", 10, 'DAY', 'END') AS END_OF_SLICE
FROM tab