【SQL】对表中的记录通过时间维度分组,统计出每组的记录条数

场景:一般用作数据统计,比如统计一个淘宝用户在年、月、日的维度上的订单数。
业务:一个集合,以时间维度来进行分组求和。

准备一张订单表order,有一些常规属性,比如创建时间,订单号。
DDL语句如下:

CREATE TABLE `order` (`order_id` INT AUTO_INCREMENT PRIMARY KEY,`order_number` VARCHAR(20) NOT NULL,`order_date` TIMESTAMP DEFAULT NULL,`total_amount` DECIMAL(10, 2) NOT NULL
);

测试数据准备如下,50条DML语句,其中order_date分布在2023年1月到12月之间。
这一看就是剁手月光的节奏,月月都不消停地买(狗头保命):

INSERT INTO `order` (`order_number`, `order_date`, `total_amount`) VALUES
('ORD100001', '2023-01-05 12:30:00', 50.99),
('ORD100002', '2023-01-15 14:45:00', 75.50),
('ORD100003', '2023-02-02 10:00:00', 120.75),
('ORD100004', '2023-02-18 16:20:00', 30.25),
('ORD100005', '2023-03-10 08:55:00', 90.00),
('ORD100006', '2023-03-22 20:10:00', 65.50),
('ORD100007', '2023-04-08 09:30:00', 110.25),
('ORD100008', '2023-04-17 15:45:00', 40.75),
('ORD100009', '2023-05-03 18:20:00', 85.00),
('ORD100010', '2023-05-15 12:40:00', 150.00),
('ORD100011', '2023-06-02 14:55:00', 120.50),
('ORD100012', '2023-06-18 11:15:00', 95.25),
('ORD100013', '2023-07-05 17:30:00', 60.00),
('ORD100014', '2023-07-20 19:45:00', 130.80),
('ORD100015', '2023-08-08 08:10:00', 75.50),
('ORD100016', '2023-08-17 22:30:00', 45.25),
('ORD100017', '2023-09-03 14:50:00', 110.00),
('ORD100018', '2023-09-15 16:15:00', 80.25),
('ORD100019', '2023-10-02 11:30:00', 95.50),
('ORD100020', '2023-10-18 13:45:00', 120.75),
('ORD100021', '2023-11-05 09:00:00', 55.00),
('ORD100022', '2023-11-20 18:20:00', 90.80),
('ORD100023', '2023-12-08 10:45:00', 70.50),
('ORD100024', '2023-12-17 14:00:00', 35.75),
('ORD100025', '2023-12-29 18:20:00', 120.00),
('ORD100076', '2023-03-08 15:30:00', 80.50),
('ORD100077', '2023-03-17 12:00:00', 45.75),
('ORD100078', '2023-04-02 16:20:00', 60.00),
('ORD100079', '2023-04-15 19:45:00', 130.80),
('ORD100080', '2023-05-03 08:10:00', 75.50),
('ORD100081', '2023-05-15 22:30:00', 45.25),
('ORD100082', '2023-06-02 14:50:00', 110.00),
('ORD100083', '2023-06-18 16:15:00', 80.25),
('ORD100084', '2023-07-05 11:30:00', 95.50),
('ORD100085', '2023-07-20 13:45:00', 120.75),
('ORD100086', '2023-08-05 09:00:00', 55.00),
('ORD100087', '2023-08-20 18:20:00', 90.80),
('ORD100088', '2023-09-08 10:45:00', 70.50),
('ORD100089', '2023-09-17 14:00:00', 35.75),
('ORD100090', '2023-09-29 18:20:00', 120.00),
('ORD100091', '2023-10-08 15:30:00', 80.50),
('ORD100092', '2023-10-17 12:00:00', 45.75),
('ORD100093', '2023-11-02 16:20:00', 60.00),
('ORD100094', '2023-11-15 19:45:00', 130.80),
('ORD100095', '2023-12-03 08:10:00', 75.50),
('ORD100096', '2023-12-15 22:30:00', 45.25),
('ORD100097', '2023-12-29 14:50:00', 110.00),
('ORD100098', '2023-12-30 16:15:00', 80.25),
('ORD100099', '2023-12-31 11:30:00', 95.50),
('ORD100100', '2023-12-31 13:45:00', 120.75);

有了以上测试数据,现在我们的需求:订单表在每月为单位的订单数、每天为单位的订单数。

首先是每月为单位的订单数,要求返回数据格式为:

{"orderMonth": "2023-01","orderCount": 4
}

sql编写如下:

SELECT DATE_FORMAT(order_date, '%Y-%m') as orderMonth, COUNT(*) as orderCount
FROM `order`
GROUP BY orderMonth;

返回数据
在这里插入图片描述
对sql的解读:这里的关键是使用DATE_FORMAT函数来将order_date字段格式化为年月的形式,然后使用GROUP BY按照这个格式化的日期进行分组,并使用COUNT(*)来统计每组的记录条数。

然后是每天为单位的订单数,要求返回数据格式如下:

{"orderDay": "2023-01-08","orderCount": 2
}

sql编写如下:

SELECT DATE_FORMAT(order_date, '%Y-%m-%d') as orderDay, COUNT(*) as orderCount
FROM `order`
GROUP BY orderDay;

查询结果,我只能说能恐怖,我还没有截图完整,这个买快递的频率,直男流泪(╥╯^╰╥):
在这里插入图片描述
好的,以上就是这次sql的分享,如果你觉得对你有帮助,同学能动动小手指,帮我点个赞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/234933.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解Git(所有命令)附带图片

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 其他…

国产AI工具钉钉AI助理:开启个性化助手服务的新篇章

钉钉AI助理是钉钉平台的一项功能,它可以根据用户的需求提供个性化的AI助手服务。用户可以在AI助理页面一键创建个性化的AI助理,如个人的工作AI助理、旅游AI助理、资讯AI助理等。企业也可以充分使用企业所沉淀的知识库和业务数据,在获得授权后…

Amazing OpenAI API:把非 OpenAI 模型都按 OpenAI API 调用

分享一个有趣的小工具,10MB 身材的小工具,能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。 让许多依赖 OpenAI API 的软件能够借助开发者能够接触到的,非 OpenAI 的 API 私有部署和使用起来。 写在前面 这个小工具软件写于两…

C++学习笔记——对象的指针

目录 一、对象的指针 二、减少对象的复制开销 三、应用案例 游戏引擎 图像处理库 数据库管理系统 航空航天软件 金融交易系统 四、代码的案例应用 一、对象的指针 是一种常用的技术,用于处理对象的动态分配和管理。使用对象的指针可以实现以下几个方面的功…

HTTP介绍

目录 HTTP介绍 1、HTTP 工作原理 2、HTTP 消息结构 3、客户端请求消息 4、服务器响应消息 5、HTTP 请求方法 6、HTTP 响应头信息 7、HTTP 状态码 HTTP介绍 1、HTTP 工作原理 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发…

2024-01-03 无重叠区间

435. 无重叠区间 思路:和最少数量引爆气球的箭的思路基本都是一致了!贪心就是比较左边的值是否大于下一个右边的值 class Solution:def eraseOverlapIntervals(self, points: List[List[int]]) -> int:points.sort(keylambda x: (x[0], x[1]))# 比较…

20、Kubernetes核心技术 - 基于Prometheus和Grafana搭建集群监控平台

目录 一、概述 二、监控平台架构图​编辑 三、部署 Prometheus 3.1、Prometheus简介 3.2、部署守护进程node-exporter 3.3、部署rbac 3.4、ConfigMap 3.5、Deployment 3.6、Service 3.7、验证Prometheus 四、部署Grafana 4.1、Deployment 4.2、Service 4.3、Ing…

12.1SPI驱动框架

SPI硬件基础 总线拓扑结构 引脚含义 DO(MOSI):Master Output, Slave Input, SPI主控用来发出数据,SPI从设备用来接收数据 DI(MISO) :Master Input, Slave Output, SPI主控用来发出数据,SPI从设备用来接收…

大气精美网站APP官网HTML源码

源码介绍 大气精美网站APP官网源码,好看实用,记事本修改里面的内容即可,喜欢的朋友可以拿去研究 下载地址 蓝奏云:https://wfr.lanzout.com/itqxN1ko2ovi CSDN免积分下载:https://download.csdn.net/download/huayu…

报错解决方法——http404(Spring MVC)

一.检查静态资源是否加载成功 成功的标志就是在项目跑起来之后再target文件夹中的classes文件夹中可以找到自己写的配置文件。 1.查看resources文件夹是否被识别为资源文件夹 如图所示,文件夹图标右下角有三条杠代表被识别为资源文件 2.在pox.xml文件中插入如下…

FineBI实战项目一(4):指标分析之每日订单总额/总笔数

1 明确数据分析目标 统计每天的订单总金额及订单总笔数 2 创建用于保存数据分析结果的表 use finebi_shop_bi;create table app_order_total(id int primary key auto_increment,dt date,total_money double,total_cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(c…

Redis内存策略:「过期Key删除策略」+ 「内存淘汰策略」

Redis之所以性能强,最主要的原因就是基于内存存储,然而单节点的Redis其内存大小不宜过大,否则会影响持久化或主从同步的性能。 Redis内存满了,会发生什么? 在Redis的运行内存达到了某个阈值,就会触发内存…

Docker-Compose部署Redis(v7.2)主从模式

文章目录 一、前提准备1. redis配置文件2. 下载redis镜像3. 文件夹结构 二、docker-compose三、主从配置1.主节点配置文件2.从节点配置文件 四、运行五、测试 环境 docker desktop for windows 4.23.0redis 7.2 一、前提准备 1. redis配置文件 因为Redis 7.2 docker镜像里面…

用户管理第一节课,阿里生成代码包

鱼皮教程生成所用到的 一、网址 网址: Cloud Native App Initializer (aliyun.com) 二、仿照生成 2.1 Maven Project & Java 2.2 Spring Boot版本 2.3 高级选项 2.3.1 项目名称可根据需求改 注意:不要有空格 2.4 应用架构 选择:单…

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认2.消息持久化3.消费者确认4.消费者失败重试 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如…

统一网关 Gateway【微服务】

文章目录 1. 前言2. 搭建网关服务3. 路由断言工厂4. 路由过滤器4.1 普通过滤器4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 前言 通过前面的学习我们知道,通过 Feign 就可以向指定的微服务发起 http 请求,完成远程调用。但是这里有一个问题&am…

力扣最热一百题——只出现一次的数字

这个合集已经很久没有更新了,今天来更新更新~~~ 目录 力扣题号 题目 题目描述 示例 提示 题解 Java解法一:Map集合 Java解法二:位运算 C位运算代码 力扣题号 136. 只出现一次的数字 - 力扣(LeetCode) 下述题…

Linux 常用指令汇总

Linux 常用指令汇总 文章目录 Linux 常用指令汇总[toc]前言一、文件目录指令pwd 指令ls 指令cd 指令mkdir 指令rmdir 指令tree 指令cp 指令rm 指令mv 指令cat 指令more 指令less 指令head 指令tail 指令echo 指令> 指令>> 指令 二、时间日期指令date 指令cal 指令 三、…

MySQL语法及IDEA使用MySQL大全

在项目中我们时常需要写SQL语句,或简单的使用注解直接开发,或使用XML进行动态SQL之类的相对困难的SQL,并在IDEA中操控我们的SQL,但网上大都图方便或者觉得太简单了,完全没一个涵盖两个方面的讲解。 单表: …

[C#]winform部署PaddleDetection的yolo印章检测模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleDetection.git 【算法介绍】 PaddleDetection 是一个基于 PaddlePaddle(飞桨)深度学习框架的开源目标检测工具库。它提供了一系列先进的目标检测算法,包括但不限于 Faster R-CNN, …