Webサイトへのユーザー対話を記録し、[UserId]や[LogDate]などの値を含むログを保存するアクティビティデータベースがあります。Microsoft SQLサーバーは30分ごとに区別されます。
UserId|LogDate
123 |2017-01-01 11:17:35.190
私は時間の経過とともに別個のユーザーセッションの数を調べようとしています。これは、個別のユーザカウントすることにより、十分に簡単だろう
:これはその後、分類されたとしてしかし
SELECT COUNT(DISTINCT UserId) FROM ActivityDatabase.dbo.Logs
は、私は彼らがログに以前のログから30分以上を持っている場合は、複数回の利用者をカウントする必要があります新しいセッションとして。
セッションは、30分の時間枠内にログを持つものとして定義されています。例:ユーザーが13.40で、別のログを作成する場合
- ユーザーは13.30でログを作成する場合は、時間をかけて個別のユーザーのための値 セッションは1
- だろうことは、カウントはまだのように1でなければなりませんそれは前回のログから30分以内です。
- ユーザーが14.20に別のログを作成した場合、前のログの30分後にカウントが2になるはずです。
これはSQLで可能ですか?以前のユーザーログと比較してユーザーのすべてのログを確認する方法が必要です。これらの時間差が30分を超える場合は、一意のセッションとしてカウントされます。
SQLの出力は、期間ではなく数値でなければなりません。
ありがとうございます。
クエリがアプリケーションによって呼び出されている場合、レコードを取得し、日付でソートし、アプリケーションコードを使用してセッションを識別する方が簡単です。 –