【发布时间】:2018-09-16 18:18:33
【问题描述】:
对不起,我尝试研究它,但似乎找不到合适的东西。
以下我已经找到了,但不能用于我的问题:
Filtering MySQL query result set to yield multiple occurences within a specific period of time
SQL Query To Obtain Value that Occurs more than once
我无法修改这些语句来解决我的问题。
我想选择一个数据在 24 小时内在一个表中出现五次或更多次的所有数据。 该表包含过去几年的数据。
表格未按日期排序(时间戳 dd.mm.yy hh:mm:ss,ssssssss)
这向我显示了总体发生率 >= 5,但如果这发生在 24 小时内,则不会。
SELECT Column, COUNT(*) FROM Table
GROUP BY Column
HAVING COUNT(*) >= 5;
欢迎对搜索关键字提出任何建议。
在此先感谢您。 最良好的问候 丹约
编辑: 谢谢大家的帮助,我很抱歉提出了不好的问题。 我会尽力回答你所有的问题。
@mathguy 数据库版本为 12c。
它确实有一列用于“数据”,另一列用于日期(时间戳)。我想在该值第一次出现后的
@马修·麦克皮克 我仍在尝试理解您的 SQL 语句。对不起,我对 SQL 是全新的。从我问我的问题的方式来看,这很明显:(。
@Aurelian 我的问题问得不好。所以你的答案不合适,对不起。
@all 我对我提出的错误问题和浪费您的时间感到难过。
希望你能接受我的道歉。
最好的问候 丹约
EDIT2:我现在正在尝试这个
begin
for i in (select Table.DATE(Timestamp), Table.IP, Table.Value from Table)
loop
dbms_output.put_line(i.Value); (instead of this output, i would like to add another loop and compare the Date(Timestamp) with i.DATE and count if matches
end loop;
end;
【问题讨论】:
-
你的桌子是什么样子的?它是否有一列用于“数据”,另一列用于日期/时间(在 Oracle 中,数据类型为
date或timestamp)?并且您需要在 24 小时窗口内的“数据”列中查找相同值的出现?如果是这样,这里还有几个问题。 “24 小时内”是指 -
还有:您使用的是什么版本的 Oracle? SELECT * FROM V$VERSION 会告诉你,如果你不知道。
-
你好 mathguy,谢谢你的帮助。我已经更新了我的问题。
-
您只想要第一次出现后 24 小时内的出现次数吗?因此,如果您在周二出现 1 次“数据”值,然后在周五出现 20 次,您希望看到“数据”值出现“1”,而不是 20?
-
嗨,我想在他第一次出现后 24 小时内出现超过 5 次时查看该值。示例:它现在发生一次。接下来的 4 次发生在 3 天内(从现在起),然后是 1 次发生在 10 天内(从现在起)。我的 sql 语句的结果不会显示任何内容。