数据计算导入时间和审核时间之间的差并且按照时间区间,整理成excel画出图表。

关键的表字段如上图所示。

首先两个日期的加减涉及到mysql的函数datediff(),可以计算出两者之间的差值

SELECTfk_comp_id,datediff(LEFT (f_create_time, 8),LEFT (f_date, 8))
FROMt_athlete_score
WHEREf_year = 2019
GROUP BYfk_comp_id

然后计算差值在什么范围之内,使用到mysql的函数INTERVAL(),INTERVAL()函数进行比较列表(N1,N2,N3等等)中的N值。该函数如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。如果N为NULL,它将返回-1。列表值必须是N1<N2<N3的形式才能正常工作。下面的代码是显示 INTERVAL()函数如何工作的一个简单的例子:

mysql>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10);
+---------------------------------------------------------+
| INTERVAL(6,1,2,3,4,5,6,7,8,9,10)                        |
+---------------------------------------------------------+
| 6                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

结果中,6是从零开始的索引,列表第一个值的值大于N. 在我们的例子中,6 属于 [6,7) ,所以返回第6个索引

sql可以演化为:


SELECTINTERVAL (datediff(LEFT (f_create_time, 8),LEFT (f_date, 8)),0,10,20,30,40,50,60,70,80,90,100,110,120) AS dayNumber,fk_comp_id,datediff(LEFT (f_create_time, 8),LEFT (f_date, 8))
FROMt_athlete_score
WHEREf_year = 2019
GROUP BYfk_comp_id

查询出来的结果,如图所示:

然后为了能更好看,表达的更清晰一点,可以使用ELT()函数,将每个值赋予意义,ELT(n,str1,str2,str3,…) :如果n=1,则返回str1,如果n=2,则返回str2,依次类推。如果n小于1或大于参数个数,返回NULL。

mysql> SELECT ELT(3,'hello','halo','test','world');
+--------------------------------------+
| ELT(3,'hello','halo','test','world') |
+--------------------------------------+
| test                                 |
+--------------------------------------+
1 row in set

此时,mysql的SQL语句演变为:

SELECTELT(INTERVAL(datediff(LEFT (f_create_time, 8),LEFT (f_date, 8)),0,10,20,30,40,50,60,70,80,90,100,110,120),'<=10','10<x<=20','20<x<=30','30<x<=40','40<x<=50','50<x<=60','60<x<=70','70<x<=80','80<x<=90','90<x<=100','100<x<=110','110<x<=120','x>=120') as dayNumber,fk_comp_id,
datediff(LEFT (f_create_time, 8),LEFT (f_date, 8))
FROMt_athlete_score
WHEREf_year = 2019
GROUP BYfk_comp_id

然后统计每个区间的个数,sql演化为:

select m.dayNumber,count(fk_comp_id) from (
SELECTELT(INTERVAL (datediff(LEFT (f_create_time, 8),LEFT (f_date, 8)),0,10,20,30,40,50,60,70,80,90,100,110,120),'<=10','10<x<=20','20<x<=30','30<x<=40','40<x<=50','50<x<=60','60<x<=70','70<x<=80','80<x<=90','90<x<=100','100<x<=110','110<x<=120','x>=120') AS dayNumber,fk_comp_id,datediff(LEFT (f_create_time, 8),LEFT (f_date, 8)),INTERVAL (datediff(LEFT (f_create_time, 8),LEFT (f_date, 8)),0,10,20,30,40,50,60,70,80,90,100,110,120) as orderindex
FROMt_athlete_score
WHEREf_year = 2019
GROUP BYfk_comp_id
) as m GROUP BY m.dayNumber ORDER BY m.orderindex

查询出来的结果为:

将查询结果,做成excel图表如下图:

mysql把日期相减并按照区间范围统计相关推荐

  1. mysql中日期相减_解放双手!用这3个日期函数解决入职、工龄等天数的计算

    人事部门员工的入职天数.财务部门合同的到期剩余天数等等,可以通过Excel表格来实现自动计算功能. 今天小编分享三个与日期有关的函数 一.EDATE函数 很多公司新员工入职会有3个月试用期,根据入职日 ...

  2. mysql中日期相减_非凡教育教你excel怎么计算两个日期天数差和时间差

    商务办公培训老师在本文中主要是介绍如何在excel中计算日期和时间,包括两个日期之间的天数.时间之间的差和显示样式. 首先,计算两个日期之间的天数.在excel中,两个日期直接相减就可以得到两个日期间 ...

  3. mysql中日期相减_Excel教程:Excel日期问题的小妙招

    通知:安卓APP以发布课程可以缓存下载和倍速看 IOS系统(内测中,请公众号左下角学习) 1.怎么快速输入当前日期? 函数: 输入公式:=TODAY() TODAY函数:返回日期格式的当前日期. 搜狗 ...

  4. mysql中日期相减_Excel日期和时间运算

    对于Excel的日期和时间运算一般人都很头疼,文章的开始我先给大家说个真理吧,遇到这种问题,不管三七二十一,直接暴力相加或相减,然后把运算结果设置成日期或时间格式,结果也许就有了. 下边我把日期和时间 ...

  5. mysql中日期相减_如何使用MySQL数据库

    如何使用MySQL数据库 前言:前面我们已经了解了如何搭建MySQL数据库,那么接下来我们就一起来了解一下,如何使用MySQL数据库. MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构应 ...

  6. mysql中日期相减_MySQL环境配置和10分钟快速入门

    MySQLFrom:Datawhale作者:皮钱超,厦门大学,Datawhale原创作者本文约3000字,建议阅读9分钟审稿人:杨煜,Datawhale成员,就职于毕马威,从事数据分析工作.本文中介绍 ...

  7. mysql时间相减得到天数保留两位_[转]Mysql日期函数-日期相减返回天数

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数. select datediff('2008-08-08', '2008-08-01'); ...

  8. mysql日期减后取月_MySql日期相减返回月数_MySQL

    bitsCN.com MySql日期相减返回月数 1.PERIOD_DIFF(P1,P2) 返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM) 例:SELECT PERIOD_DI ...

  9. mysql当前日期减去天数_mysql日期函数-日期相减返回天数

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...

最新文章

  1. java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
  2. 第八节 字符串的插入
  3. NHibernate one-to-one
  4. LoadRunner 测试Oracle数据库及Siebel性能
  5. 内核功能导致重启_诊断修复 TiDB Operator 在 K8s 测试中遇到的 Linux 内核问题
  6. C3P0-数据库连接池解读
  7. 中年职场危机,这是我看过最靠谱的建议
  8. 路由表及路由的选择算法
  9. 《研磨设计模式》chap22 装饰模式Decorator(4)AOP+总结
  10. 服务注册发现consul之五:Consul移除失效服务的正确姿势
  11. 两点之间直线只有一条,曲线却有无数条,哪条才是最短的?
  12. HTML 5 Web 存储-localStorage
  13. android studio 2.1.1 优化,Android Studio 2.1 + javaCV 1.2 配置
  14. python公开课乐博学院_乐搏学院VIP36期全栈班学习群 - 乐搏软件教育 - 软件测试 - Powered By EduSoho...
  15. 如何计算像素当量_「轴承知识」如何通过静承载能力选择轴承
  16. 入门必学 | R语言常见的报错指南
  17. 软件测试工具都有哪些
  18. linux远程摄像头,通过Web远程浏览Mini6410上的摄像头
  19. FI MM CO T-CODE
  20. 卡苹果6plus在线_苹果手机解决微信接收消息延时

热门文章

  1. Linux学习笔记之Linux常用命令
  2. go语言抖音demo
  3. datawhale6月组队学习-task01
  4. centos6更换yum源
  5. 一个蓝牙,一个摄像头,加个震动尾巴,再加点控制模块,可以做个微型机器人了...
  6. win7怎么修改计算机皮肤,360浏览器皮肤在哪?Win7系统修改360浏览器皮肤的方法...
  7. python中keyerror什么意思_python 的keyerror问题
  8. 美团高性能终端实时日志系统建设实践
  9. 苹果Mac OS X快捷键大全
  10. CentOS下安装TTF字体