我希望按日期查询一组数据,但仅限于过去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,
...
因为我的第一张桌子不一定每天都有记录
我希望结果是
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)
以及加入日期表(以确保我始终填充日期)。但是,我不确定这是否是最好的实现,我没有得到正确的结果(仍在调试)。
答案 0 :(得分:2)
我怀疑你想要left join
查询:
SELECT t.category_name, t.entity_id,
SUM(condition_1) OVER (ORDER BY c.date_id
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
)
FROM calender c LEFT JOIN
table_name t
ON c.date_id = t.date_id AND t. condition_1 = True ;
我认为SUM(condition_1)
不返回true或false - 可能是MAX()
或聚合布尔值OR
。但是,这就是你提出的问题。