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索引(MySQL中冗余和重复索引的区别说明)
- mysql六大锁解析(MySQL 锁的相关知识总结)
- 怎么查看mysql运行日志(通过Query Profiler查看MySQL语句运行时间的操作方法)
- 修改mysql默认超时(MySQL sql_mode修改不生效的原因及解决)
- mysqlcount使用方法(详解 MySQL中count函数的正确使用方法)
- MySql 中IFNULL、ISNULL和NULLIF
- docker如何搭建mysql(docker容器访问宿主机的MySQL操作)
- mysqlreplace用法(细说mysql replace into用法)
- mysql慢日志设置多少合适(MySQL慢查询日志的作用和开启)
- mysql提高分页效率(MySQL优化教程之超大分页查询)
- mysql 5.5.27 winx64安装配置方法图文教程(mysql 5.5.27 winx64安装配置方法图文教程)
- mysql表结构设计分享(MySql开发之自动同步表结构)
- mysql8.0.15安装详细教程(mysql8.0.11数据目录迁移的实现)
- navicat for mysql连接测试失败(Navicat连接虚拟机mysql常见错误问题及解决方法)
- linux安装nacos教程(Nacos配置MySQL8的方法)
- 被骂欺师灭祖,与郭德纲公开叫板,何云伟改名何沄伟,开始画画了(与郭德纲公开叫板)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
- 乔欣古装女主戏获热度 作为女主,却没吃到红利(乔欣古装女主戏获热度)
热门推荐
- css用clearfix清除浮动
- sql server 2008 触发器(关于喜忧参半的SQL Server触发器详解)
- nginx跨域怎么用(如何利用map实现Nginx允许多个域名跨域)
- 数据库docker技术(总结Docker不适合部署数据库的7大原因)
- thinkphp5配置入口路径(ThinkPHP5.1框架数据库链接和增删改查操作示例)
- 在php中遍历数组使用(PHP读取远程txt文档到数组并实现遍历)
- 哪里有云主机租用(云主机租用要注意的事项?)
- python中的冒号怎么看(python 列表中[ ]中冒号‘:’的作用)
- dedecms搜索功能的实现(DEDECMS调用特定ID文章内容的实现方法)
- next js上线(Next.js入门使用教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9