我有一张每小时更新一次的table。有时它可能会因为任何原因错过一个小时。我想每天凌晨4点数记录,如果没有记录,就看下一个小时(凌晨5点)。如果两个记录都不存在,我也希望它返回0。
以下是我目前掌握的情况:
SELECT
DATE(last_update) as dt,
COUNT(DISTINCT "number") as redlit
FROM mytable
WHERE
status = 'foo' AND
defective = 'yes' AND
last_update >= '2020-01-01' AND
CASE WHEN (DATE_PART('hour',last_update) = 4) IS NULL THEN (DATE_PART('hour',last_update) = 5)
ELSE (DATE_PART('hour',last_update) = 4) END
GROUP BY 1
ORDER BY dt;
这个 CASE WHEN
声明似乎只看凌晨4点。我不知道如何在凌晨4点不存在的情况下让它看凌晨5点。如果两者都是,我不知道如何返回0 NULL
.
样品:
dt redlit datepart
2020-03-19 21 4.0
2020-03-20 14 4.0
2020-03-22 16 4.0
2020-03-23 45 4.0
期望结果:
dt redlit datepart
2020-03-19 21 4.0
2020-03-20 14 4.0
2020-03-21 20 5.0
2020-03-22 16 4.0
2020-03-23 45 4.0
2020-03-24 0 NULL
1条答案
按热度按时间bbuxkriu1#
我不太熟悉redshift的语法,也没有办法测试这段代码。但这应该管用。这段代码并不优雅,可能需要一些调整