已知访问时间,统计访问间隔时间差(精确到秒)连续相同的情况达到10次记录,用sql写出!
解决方案 »
- 急急急,表或视图不存在,怎么回事?
- 如何自动修改tnsname.ora文件内容
- 局域网连接,TOAD正常,TNSPING正常,但是SQLPLUS提示“TNS: 连接超时”
- 如何把ORACLE数据列变成行
- 请教一个类似于数组的ORACLE问题
- 求ORACLE10G的非官网下载地址
- 请教:如何可以把SQL*PLUS输入的命令用C编程来实现(如sqlplus命令shutdown immediate如何用C来实现)
- 一次insert500万条记录,是一次提交快,还是分几次提交快
- jdbc 连接 oracle 出错: 必须 做为 sysdba or sysoper 连接, 在线等
- 怎么样用SQL LOADER装入含BLOB字段的数据
- 关于性别字段不兼容问题
- Oracle 9i 升级到10g 现有的程序代码需要做改动吗?
使用先排序,按照【访问IP】【访问时间】(假定字段)排序,
然后使用分析函数【lag】求出上一条记录的【访问时间】差。
然后再用分析函数【sum】求出相同特定条件的记录数量就好了,
剩下的问题地球人知道怎么做了:)
我想统计IP的C段(即192.168.212.*,前面三个是一样的),但是前面三个也不知道具体是什么,数据库中已有IP记录,现在想找到IP的C段相同超过1000条的记录?
IP分组稍微麻烦点,上面的SQL可以取出C段前三个,如果你的数据未能按照满位存储就需要先转换一下,
例如【192.1.23.91】-> 【192.001.023.091】这样的数据如果不转,你就不能有效处理。
不好意思,那么你你能用查查函数了,查找做后一个[.]的位置,然后再截取了。
上面的代码是的10g。
select v.*,
count(substr(v.ip, 1, instr(v.ip, '.', -1))) over(partition by substr(v.ip, 1, instr(v.ip, '.', -1))) as ipc
from visitor_info v
解释一下,主要是这句了:substr(v.ip, 1, instr(v.ip, '.', -1)), 先从右到左找到每一个点的位置instr(v.ip, '.', -1),然后从左到右截就行了,呵呵,这个方法只对于IP才可以了.
顺便谢谢ehuman,难得你这么热心,看好多问题都是你回答的,再次表示感谢!