私は日付でデータセットを照会しようとしていますが、過去7日間の条件が真である場合にのみ検索します。条件付きウィンドウ関数sql
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が真である日付なので、これを行う最善の方法は何ですか?私は(私は常に人口dateidを持っていることを確認するため)、日付テーブルに参加するとともに
SUM(condition_1) OVER (ORDER BY date_id
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
のようなものを試してみました。しかし、これが最良の実装であるかどうかわからず、正しい結果が得られていない(まだデバッグ中)。
あなたの例はありません。あなたは4行から始まって7を得ていますか? –
私の初期のテーブルは、必ずしも各日付のレコードを持っているわけではないので、私は(私のポストを少し鮮明に編集するために悪い)日付テーブルに参加する必要があります。 – jfalkson
また、使用しているデータベースで質問にタグを付けてください。 –