• 技术文章 >数据库 >mysql教程

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

    2016-06-06 09:45:29原创722
    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核实处理。
    上一篇:mysql java.sql.SQLException 问题 下一篇:gem-windous环境下 rails 连接mysql 报错
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 深入解析mysql中的索引(原理详解)• MySQL约束与多表查询基础详解• MySQL学习之一条SQL是如何执行的?聊聊执行流程• 完全掌握MySQL主从延迟的解决方法• mysql hint是什么
    1/1

    PHP中文网