【发布时间】:2017-01-25 14:04:48
【问题描述】:
我正在寻找 24 小时内 5 分钟窗口之间的重复交易。我试图找到滥用其他用户访问权限的用户。这是我到目前为止所拥有的,但它只搜索过去 5 分钟而不是搜索 24 小时期间。是甲骨文。
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
转接
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
【问题讨论】:
-
请添加您的表架构和所需的结果。
-
标记您正在使用的 dbms。 (那里有一些非 ANSI SQL。)
-
我猜 Oracle 里面有
sysdate(MySQL 有SYSDATE(),但它是一个函数)。 -
向我们展示示例数据和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
-
你是对的。是甲骨文