如果是指定某个10分钟范围,说个可能性能一般的语句。。
select fuid, count(*) as count from (select fuid, tuid from 聊天数据表 group by fuid, tuid 时间范围语句你自己搞定) tmp group by fuid having count >= 5
user u1 inner join user u2 on datediff(mi, u1.time, u2.time) < 10 and u1.id <> u2.id and u1.user_id = u2.user_id group by u1.id having count(u2.id) > 5
如果是指定某个10分钟范围,说个可能性能一般的语句。。 select fuid, count(*) as count from (select fuid, tuid from 聊天数据表 group by fuid, tuid 时间范围语句你自己搞定) tmp group by fuid having count >= 5
如果是哪个10分钟都行的话。。。
“十分钟内” 这个条件,貌似SQL比较难搞。。
这个问题一下子想着查所有满足条件的用户感觉比较困难,可以考虑先算出某一个用户10分钟内私聊了5个人以上就比较简单了,如果满足条件就把数据存到中间表,去重。但是用户量很大的话这种方法可能就不好用了,可能需要专业的数据分析工具了。
定义一个表,代表一条聊天记录之后的十分钟之内有另一条聊天记录的,然后再按聊天记录聚合,如果有5条以上就是有一个以当前聊天时间为起点十分钟之内的。。。表达不出来了大概的代码是这样的,应该是对的
user u1 inner join user u2 on datediff(mi, u1.time, u2.time) < 10 and u1.id <> u2.id and u1.user_id = u2.user_id group by u1.id having count(u2.id) > 5
时间/(10*60*1000)后,两种情况 1、对值取整,group by 时间,判断在10分钟单位内,统计和多少角色聊天, 2、对值进行四舍五入后,group by 时间,10分钟单位时间内,和多少角色聊天, 可能有疏漏
来自酷炫的 CNodeMD
循环每条记录 看看 这条记录+5分钟内 同一个人的聊天人数