首页 >数据库 >mysql教程 >mysql-关于时间段的汇总查询,如何实现?

mysql-关于时间段的汇总查询,如何实现?

WBOY
WBOY原创
2016-06-06 09:45:291498浏览

mysql汇总查询存储过程

sign db_username db_ip beginTime endTime
downloadFiles tom 125.92.142.224 1378063471 1378063472
downloadFiles tom 125.92.142.224 1378072128 1378072129
downloadFiles tom2 84.14.196.239 1378077892 1378077893
downloadFiles tom2 84.14.196.239 1378077893 1378077894
downloadFiles tom2 84.14.196.239 1378077894 1378077895
downloadFiles tom2 84.14.196.239 1378077895 1378077896
downloadFiles tom2 84.14.196.239 1378077896 1378077897
downloadFiles tom2 84.14.196.239 1378077897 1378077898
downloadFiles tom2 84.14.196.239 1378079181 1378079182
downloadFiles tom2 84.14.196.239 1378079181 1378079182
downloadFiles tom2 84.14.196.239 1378079182 1378079183
downloadFiles tom2 84.14.196.239 1378079182 1378079183
downloadFiles tom2 84.14.196.239 1378079184 1378079185
downloadFiles tom2 84.14.196.239 1378079184 1378079185
downloadFiles tom2 84.14.196.239 1378079184 1378079185
downloadFiles tom2 84.14.196.239 1378079185 1378079186
downloadFiles tom2 84.14.196.239 1378079185 1378079186
downloadFiles tom2 84.14.196.239 1378079185 1378079186
downloadFiles tom2 84.14.196.239 1378079188 1378079189
downloadFiles tom2 84.14.196.239 1378079188 1378079189
downloadFiles tom2 84.14.196.239 1378079189 1378079190
downloadFiles tom2 84.14.196.239 1378079190 1378079191
downloadFiles tom2 84.14.196.239 1378079190 1378079191
downloadFiles tom2 84.14.196.239 1378079191 1378079192
downloadFiles tom2 84.14.196.239 1378079192 1378079193

我数据库里有这样的数据(关于时间值,我己转为unix 时间戳,方便比较)
现在我想要查询一个用户不重复的时间段的总和(如有重复的时间段,不计入总和,只计一次)
如 tom 第一条 为 2013-09-11 18:22:34 as T1 2013-09-11 18:22:54 as T2
    第二条 为 2013-09-11 18:23:34 as T3 2013-09-11 18:24:54 as T4  
SUM=(T2-T1)+(T4-T3) boz T3>T2
如果 第二条 为 2013-09-11 18:24:00 as T3 2013-09-11 18:24:54 as T4
SUM=(T4-T1) boz T3T1
如果 第二条 为 2013-09-11 18:22:37 as T3 2013-09-11 18:22:50 as T4
sum=T2-T1 boz T3

想将各个用户的时间段总和求出来
结果集为
downloadFiles tom 125.92.142.224 TotalTime 15(seconds)
downloadFiles tom2 84.14.196.239 TotalTime 309(seconds)
分组为sign/username/ip
想用一句SQL或存储过程实现 
避免用通过loop来累积时间段总和,效率又太低了
大家有什么好的办法呢

如己加了标签 2013-09-11 18:22:34 as T1 2013-09-11 18:22:54 as T2
但新记录为  2013-09-11 18:18:34 as T3 2013-09-11 18:23:54 as T4
又要重新算总值

我的目的,是求一個用戶,傳輸文件的總時間,但不要重復的時間段
如3到5點,傳一百個文件,不能sum(100*2) 只能2 h
一個文件是2:00-3:00 別一個文件是 2:30-3:00  total 為 3-2=1
一個文件是2:00-3:00 別一個文件是 2:30-3:30  total 為 3.5-2=1.5

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn