24時間の間に5分のウィンドウ間で重複したトランザクションを探しています。私は他のユーザーのアクセスを悪用しているユーザーを見つけようとしています。ここまでは私がこれまで持っていたことはありますが、それは過去5分間だけを検索しており、24時間を検索していません。それはオラクルです。24時間以内に5分以内に重複するトランザクションを探す
SELECT p.id, Count(*) count
FROM tranledg tl,
patron p
WHERE p.id = tl.patronid
AND tl.trandate > (sysdate-5/1440)
AND tl.plandesignation in ('1')
AND p.id in (select id from tranledg tl where tl.trandate > (sysdate-1))
GROUP BY p.id
HAVING COUNT(*)> 1
例データ:
パトロン
id | Name
--------------------------
1 | Joe
2 | Henry
3 | Tom
4 | Mary
5 | Sue
6 | Marie
Tranledg
tranid | trandate | location | patronid
--------------------------
1 | 2015-03-01 12:01:00 | 1500 | 1
2 | 2015-03-01 12:01:15 | 1500 | 2
3 | 2015-03-01 12:03:30 | 1500 | 1
4 | 2015-03-01 12:04:00 | 1500 | 3
5 | 2015-03-01 15:01:00 | 1500 | 4
6 | 2015-03-01 15:01:15 | 1500 | 4
7 | 2015-03-01 17:01:15 | 1500 | 2
8 | 2015-03-01 18:01:30 | 1500 | 1
9 | 2015-03-01 19:02:00 | 1500 | 3
10 | 2015-03-01 20:01:00 | 1500 | 4
11 | 2015-03-01 21:01:00 | 1500 | 5
私は、次のデータを返すことを期待する:
ID | COUNT
1 | 2
4 | 2
、あなたのテーブルのスキーマおよび所望の結果を追加してください。 – McNets
使用しているdbmsにタグを付けます。 (そこにはANSI以外のSQLがあります) – jarlh
私はOracleに 'sysdate'と推測しています(MySQLには' SYSDATE() 'がありますが、それは関数です)。 –