MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案

简介: MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案

在echarts中需要实现最近24小时和上24小时,即当天与昨天24小时内时间段的数据统计,mysql语句如下:

 //最近24小时记录;
        $sql = "select RIGHT(DATE_FORMAT(paid_at,'%Y-%m-%d %H'),2) as dataKey,ifnull(COUNT(id),0) AS totalTrans,ifnull(SUM(should_paid),0) AS totalPays from " . $db->table('orders') . "  WHERE DATE_FORMAT(paid_at,'%Y-%m-%d') = curdate()";
        $sql .= " GROUP BY DATE_FORMAT(paid_at,'%Y-%m-%d %H')";
        $row = $db->queryall($sql);
        $res["data"] = $row;
        //上24小时记录;
        $sql_p = "select RIGHT(DATE_FORMAT(paid_at,'%Y-%m-%d %H'),2) as dataKey,ifnull(COUNT(id),0) AS totalTrans,ifnull(SUM(should_paid),0) AS totalPays from " . $db->table('orders') . "  WHERE TO_DAYS(curdate()) - TO_DAYS(date_format(paid_at,'%Y-%m-%d')) = 1";
        $sql_p .= " GROUP BY DATE_FORMAT(paid_at,'%Y-%m-%d %H')";
        $row_p = $db->queryall($sql_p);
        $res["pdata"] = $row_p;
        die(json_encode_lockdata($res));

说明:

  • 直接生成00,01,02…时间点
RIGHT(date(),2) //截取时间段后两位,即00,01,02...
  • 按照当天的时间点分组,即 2020-08-03 05的形式分组
GROUP BY DATE_FORMAT(paid_at,'%Y-%m-%d %H')
  • 昨天24小时的筛选条件
TO_DAYS(curdate()) - TO_DAYS(date_format(paid_at,'%Y-%m-%d')) = 1

最终生成的数据格式:

{"err":"","res":"",
"data":[{"dataKey":"00","totalTrans":"4","totalPays":"301.70"},{"dataKey":"01","totalTrans":"1","totalPays":"39.90"},{"dataKey":"03","totalTrans":"2","totalPays":"35.80"},{"dataKey":"05","totalTrans":"3","totalPays":"80.80"},{"dataKey":"06","totalTrans":"9","totalPays":"423.90"},{"dataKey":"07","totalTrans":"38","totalPays":"1925.69"},{"dataKey":"08","totalTrans":"91","totalPays":"4324.88"},{"dataKey":"09","totalTrans":"119","totalPays":"6423.51"},{"dataKey":"10","totalTrans":"128","totalPays":"9273.93"},{"dataKey":"11","totalTrans":"123","totalPays":"6563.52"},{"dataKey":"12","totalTrans":"81","totalPays":"4116.21"},{"dataKey":"13","totalTrans":"58","totalPays":"2704.50"},{"dataKey":"14","totalTrans":"77","totalPays":"6561.20"},{"dataKey":"15","totalTrans":"40","totalPays":"2078.60"},{"dataKey":"16","totalTrans":"75","totalPays":"4270.22"},{"dataKey":"17","totalTrans":"193","totalPays":"7928.64"},{"dataKey":"18","totalTrans":"81","totalPays":"3809.69"},{"dataKey":"19","totalTrans":"30","totalPays":"1409.47"}],
"pdata":[{"dataKey":"00","totalTrans":"5","totalPays":"173.20"},{"dataKey":"01","totalTrans":"1","totalPays":"25.90"},{"dataKey":"05","totalTrans":"2","totalPays":"59.80"},{"dataKey":"06","totalTrans":"9","totalPays":"279.80"},{"dataKey":"07","totalTrans":"9","totalPays":"304.00"},{"dataKey":"08","totalTrans":"28","totalPays":"1213.80"},{"dataKey":"09","totalTrans":"62","totalPays":"3588.53"},{"dataKey":"10","totalTrans":"73","totalPays":"5576.20"},{"dataKey":"11","totalTrans":"77","totalPays":"4690.90"},{"dataKey":"12","totalTrans":"60","totalPays":"3712.68"},{"dataKey":"13","totalTrans":"51","totalPays":"2377.80"},{"dataKey":"14","totalTrans":"60","totalPays":"2746.80"},{"dataKey":"15","totalTrans":"63","totalPays":"3833.20"},{"dataKey":"16","totalTrans":"61","totalPays":"3271.10"},{"dataKey":"17","totalTrans":"49","totalPays":"3171.60"},{"dataKey":"18","totalTrans":"59","totalPays":"4038.30"},{"dataKey":"19","totalTrans":"75","totalPays":"4575.40"},{"dataKey":"20","totalTrans":"116","totalPays":"4818.44"},{"dataKey":"21","totalTrans":"136","totalPays":"7200.34"},{"dataKey":"22","totalTrans":"58","totalPays":"2934.00"},{"dataKey":"23","totalTrans":"25","totalPays":"1904.00"}]}


20200803193842904.png


Done!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 运维 监控
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
2932 82
|
11月前
|
SQL 分布式计算 大数据
SparkSQL 入门指南:小白也能懂的大数据 SQL 处理神器
在大数据处理的领域,SparkSQL 是一种非常强大的工具,它可以让开发人员以 SQL 的方式处理和查询大规模数据集。SparkSQL 集成了 SQL 查询引擎和 Spark 的分布式计算引擎,使得我们可以在分布式环境下执行 SQL 查询,并能利用 Spark 的强大计算能力进行数据分析。
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
577 5
|
SQL 存储 机器学习/深度学习
如何让SQL速度飞起来 入门YashanDB优化器
优化器,SQL引擎的核心组成部分,是数据库中用于把关系表达式转换成最优执行计划的核心组件,影响数据库系统执行性能的关键组件之一。
242 15
|
SQL 数据库 UED
SQL性能提升秘籍:5步优化法与10个实战案例
在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将分享SQL优化的五大步骤和十个实战案例,帮助构建高效、稳定的数据库应用。
1656 3
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
955 9
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
800 3
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
703 1

推荐镜像

更多