文档章节

求助:关于sql如何统计时间的问题

b
 bling1245
发布于 2018/03/02 15:00
字数 646
阅读 1
收藏 0

三、现在我们假设应用计时分为app应用和web应用,需要考虑如下几个方面:

        (1)多时间段(2)表中有冗杂数据

        (3)用户是在web端和app端都登陆,这种类型的重复时间段只能取其一

 

存在数据:

存在表:应用启动时间统计表Applic_Sessions:

字段:applic    platform     start_time     end_time     status     rowid

             X          web           11:30              18:33           1           1

             X          app            11:10              17:50           1           2

             X          app            17:55              19:55           1           3

             X          app            20:31              22:31           1           4

             X          web            02:01              02:40           1           5

 

利用sql语句的方式获取到开始时间和结束时间,timestampdiff( )相减得到。

(1)取出X用户两平台中启动的最小时间

(2)取出X用户两平台中结束的最大时间

按照以上步骤,这样会带来一个问题:如rowid 为1和5的记录,相减所得结果明显大于实际结果。

 

尝试方案1:将不同平台的数据区分开单独计数:

                    (1)select t.* from Applic_Sessions t where t.platform = “web”;

                        视图:Web_View

                                    applic     platform      start_time     end_time      status     rowid

                                        X         web               11:30              18:33           1           1

                                        X          web               02:01              02:40           1           2

                                    select sum(timestampdiff(second,start_time,end_time)) from Web_View;

 

                    (2)select t.* from Applic_Sessions t where t.platform = “app”;

                        视图:App_View

                                    applic      platform     start_time     end_time     status     rowid

                                        X             app           11:10              17:50            1           1

                                        X             app           17:55              19:55            1           2

                                        X             app           20:31              22:31            1           3

                                    select sum(timestampdiff(second,start_time,end_time)) from Web_View;

 

                            这样求取出单个平台的使用时长,这种适用于:app使用时长可以换取双倍积分 等需求。但是至于中间的重复时间段更加干不掉了,这种方法pass。

方案2:

视图:Applic_Sessions

applic platform  start_time end_time status rowid

Xweb      11:30 18:33  1  1

Xapp      11:10 17:50  1  2

Xapp      17:55 19:55  1  3

X app       20:31  22:31   1   4

X web       02:01  02:40   1   5

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

                                  11:30..............................18:33(web)

                         11:10.............17:50(app)

                                                          17:55.................19:55(app)

   02:01....02:40                                                                                    20:31.......22:31

 

整理一下数据,发现其中的难点就是:web的使用时长段与app的使用时间段夹杂在一起,其他正常数据横向合并就成,那第一步就是把这些夹杂数据单独拎出来,然后取出最小启动值和最大结束值,相减就好拉:

写下这个sql,越看越别扭,能行么---显然不行

select t.* from Applic_Sessions t where

        t.start_time between (select min(t.start_time) from Applic_Sessions t)     

        and (select max(t.end_time) from Applic_Sessions t)

                and t.end_time between t.start_time and t.end_time;

至此,卡住了。。。

 

绞尽了脑汁,搞不定啊,有哪位大神可以帮帮忙啊,谢谢了

© 著作权归作者所有

b
粉丝 0
博文 34
码字总数 18632
作品 0
南京
QA/测试工程师
私信 提问
​风驰电掣:有效缩短SQL优化过程三步走!

作者介绍 梁敬彬,福富研究院副理事长、公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验。多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的...

梁敬彬
2017/07/14
0
0
风驰电掣:有效缩短SQL优化过程三步走!

作者介绍 梁敬彬,福富研究院副理事长、公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验。多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的...

梁敬彬
2017/07/14
0
0
SQL COUNT GROUP BY 统计问题

求助: 单个表的count 统计 以及 GROUP BY ; SELECT COUNT(1) AS ZSL, T.FLRJG, X.FMC AS FLRJGNAME, COUNT(CASE WHEN T.FSQXM = '1' THEN T.FBH ELSE '' END) AS ZZYC, COUNT(CASE WHEN T.F......

chendc
2016/05/08
535
2
mysql增加索引后查询时间增加

今天做sql优化时发现个问题。增加了索引后sql扫描行数减少,但是查询时间增加了。 原始sql查询时间如下 原始sql的explain分析 单独对community_id加索引后的查询时间 单独对community_id加索...

求是科技
2018/09/27
1K
1
求解:关于sql语句使用索引优化的问题

现在要对数据库中的数据进行统计,统计最近一个月的数据,现数据库的设计中有3个跟时间有关的字段 1.year 2.month 3.day 三个字段分别建有索引 现在统计最近一个月的数据需要将上述三个字段使用...

mrZhan_223
2014/03/04
456
13

没有更多内容

加载失败,请刷新页面

加载更多

Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0
设计模式之依赖倒置原则

方法

东风破2019
昨天
6
0
关于如何通过模拟器完成模拟步数提升傻瓜式解决方案(囧)

因为对Android开发不太了解,也没去问朋友所以误打误撞找到的一个提升步数的解决方案,当然只是针对某安APP运动RUN的解决方式吧。 对Android不太了解,所以找了很多的解决方案来看看能不能破...

华山猛男
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部