我希望查询一组数据的日期,但只有在过去7天的条件是真的。
比如说,
SELECT
category_name,
entity_id
FROM table_name
WHERE
condition_1 = True
AND date_id <= current_date AND date_id >= current_date - 7
但是我想同时查询多个日期ID的窗口。
假设我有
2016-01-01, foo, 123, True
2015-12-31, foo, 123, False
2015-12-26, foo, 123, True
2015-12-31, bar, 12345, False
有一个标准的日期表,我会加入,比如
2015-01-01,
2015-01-02,
...
因为我的第一张table不一定每天都有记录
我希望结果是
2016-01-01, foo, 123, True
2016-12-31, foo ,123, True
2016-12-30, foo ,123, True
2016-12-29, foo ,123, True
2016-12-28, foo ,123, True
2016-12-27, foo ,123, True
2016-12-26, foo ,123, True
因为这些是过去7天内条件1为真的日期。最好的办法是什么?我试过类似的方法
SUM(condition_1) OVER (ORDER BY date_id
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
以及加入一个日期表(以确保始终填充一个dateid)。但是,我不确定这是否是最好的实现,我没有得到正确的结果(仍在调试)。
1条答案
按热度按时间wribegjk1#
我怀疑你想要一个
left join
对于您的查询:我不认为
SUM(condition_1)
返回true或false—也许MAX()
或者是一个聚合布尔值OR
. 然而,这就是你提出的问题。