「session_change」という新しい列に1を割り当てるこのクエリがあります。 これは、(現在の行の日付)と(前の行の日付)の差が30分(30 * 60秒)。特定のパラメータに対してパーティションを修正する方法このクエリで同じ日付の日付順に並べ替えますか?
しかし、私は問題を抱えている:
これらは、日付/エポック/ session_changeです。
エポック秒で結果の行に同じ日付がある場合。それは、差が30分より大きい場合、session_changeと同じエポック秒のうち最後の1秒をマークします。 (同じエポック秒はこれらの値が1475053048.00000のレコードです)
1474460665.00000から1475053048.00000に変更すると、スナップショットに表示されている最後のレコードがマークされます。
同じエポック秒のうち、最初のレコードでsession_changeをマークする方法。
ご協力いただきありがとうございます。
SELECT *
, CASE
WHEN EXTRACT(EPOCH FROM date) - LAG(EXTRACT(EPOCH FROM date)) OVER (PARTITION BY userid ORDER BY date) >= 30 * 60
THEN 1
ELSE 0
END as session_change
FROM
<table_name>
order by date;
どのDBMSですか?オラクル? Postgres?レッドシフト?実際に使用しているDBMSのみにタグを付けてください。 –
postgresql/redshift – onlinetravel
注文を指定する別の列がない限り、* first *レコードはありません。もしあなたが好きなら、*すべてのレコードに印を付けることができます。 –