mysql 查询都是0的值(MySQL按小时查询数据,没有的补0)
类别:数据库 浏览量:2826
时间:2022-01-25 00:31:21 mysql 查询都是0的值
MySQL按小时查询数据,没有的补0需求背景
一个统计接口,前端需要返回两个数组,一个是0-23的小时计数,一个是各小时对应的统计数。
思路 直接使用group by查询要统计的表,当某个小时统计数为0时,会没有该小时分组。思考了一下,需要建立辅助表,只有一列小时,再插入0-23共24个小时
|
CREATE TABLE hours_list ( hour int NOT NULL PRIMARY KEY ) |
先查小时表,再做连接需要查的表,即可将没有统计数的小时填充上0。这里由于需要查多个表中,create_time在每个小时区间内、且SOURCE_ID等于查询条件的统计之和,所以UNION ALL了多张表
|
SELECT t. HOUR , sum (t.HOUR_COUNT) hourCount FROM ( SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_0002 cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_hs cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_kfyj cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_0002 cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_hs cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs. HOUR AS HOUR , COUNT (cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_kfyj cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId != '' > AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR ) t GROUP BY t. hour |
效果
统计数为0的小时也可以查出来了。
到此这篇关于MySQL按小时查询数据,没有的补0的文章就介绍到这了,更多相关MySQL按小时查询数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/Princar/article/details/111302667
您可能感兴趣
- mysql索引如何使用(MySQL 索引和数据表该如何维护)
- 用mysql语句写python学生管理系统(Python基于mysql实现学生管理系统)
- mysql insert into 怎么用(MySQL中INSERT的一般用法)
- mysql创建数据库基本指令(MySql 新建用户与数据库的实际操作步骤)
- docker中mysql连接命令(docker 如何修改mysql的root密码)
- mysql存储json的方式(MySQL中查询json格式的字段实例详解)
- mysql 内置函数
- mpp数据库的客户端工具(xampp默认mysql数据库root密码的修改)
- mysql读写分离同步策略(Mysql主从复制与读写分离图文详解)
- MySQL自定义函数
- mysql锁机制图解(详解mysql 中的锁结构)
- 怎样查看mysql的ddl窗口(详解MySQL8.0原子DDL语法)
- mysql查看数据库cpu使用率(CPU 以及内存从哪些方面影响 MySQL 性能?)
- mysql水平拓展的瓶颈(MySQL令人大跌眼镜的隐式转换)
- MySQL中使用mysqldump命令备份
- docker部署tomcat(Docker安装Tomcat、MySQL和Redis的步骤详解)
- 爱情能当饭吃吗(爱情能当饭吃吗说说)
- 白T恤穿法(白t恤)
- 你怎么忘了是说先爱我(你怎么忘了如何爱我)
- 做技术难吗(技术难不难)
- 林心如是谁(林心如是谁演的)
- 泰国安全吗(泰国安全吗2023)
热门推荐
- h5实现唤起本地app(h5页面唤起app如果没安装就跳转下载iOS和Android)
- sql 如何拆分字符串(SQL Server实现将特定字符串拆分并进行插入操作的方法)
- nginx的请求处理(nginx处理http请求实现过程解析)
- 如何使用html5的canvas图(html5 canvas实现给图片添加平铺水印)
- 用于播放视频文件的html5元素(html5自动播放mov格式视频的实例代码)
- iis7.5怎么安装(IIS7.5打开启用GZip压缩功能的设置教程方法)
- docker实现redis集群(详解使用Docker进行Redis主从复制实践)
- jquery无缝滚动代码(jQuery实现表格行数据滚动效果)
- jQuery里$(this)和this的区别有哪些
- dedecms参数不显示(织梦DedeCms中出现Safe Alert: Request Error step 1/2 的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9