2017-10-27 6 views
0

私はpostgresqlラグ関数を使用してユーザーの次のレコードを引き出しますが、現在のレコードの日にどのように制限しますか?ウィンドウラグ関数の制限レコードを現在の日付に設定

SELECT (sd.doc ->> 'readerId'::text)::integer current, LAG((sd.doc ->> 'readerId'::text)::integer) OVER (ORDER BY sd.created_at DESC) next FROM sd 

テーブルID(主キー)、doc(jsonbタイプ)、created_atタイムスタンプには3つのフィールドしかありません。

問題は、次のreaderIdを選んでその日にユーザーが訪問したかったということです。私の現在のクエリでは、次のreaderIdを翌日から返すことができます。

+3

してください** [EDIT] **あなたの質問といくつかの[サンプルデータ]を追加します(http://plaintexttools.github.io/plain-text-table/ )と、そのデータに基づいて予想される出力。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、** **スクリーンショットはありません**(http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-of-code-on-so-asking-a-question/285557#285557)。 ** [編集] **あなたの質問 - コメントを投稿するコードや追加情報はありません**。 –

答えて

1

ただ、日によってそれを分割:

SELECT (sd.doc ->> 'readerId'::text)::integer current, LAG((sd.doc ->> 'readerId'::text)::integer) OVER (PARTITION BY date_trunc('1 day', sd.created_at) ORDER BY sd.created_at DESC) next FROM sd 
関連する問題