【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的分享,如果你觉得对你有帮助,同学能动动小手指,帮我点个赞。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 225.用队列实现栈(详解) ૮꒰ ˶• ༝ •˶꒱ა

题目详情: 思路:1.定义两个队列用于存储栈的数据,其中一个为空。 2.对我们定义的栈进行入数据,就相当于对不为空的队列进行入数据。 3.对我们定义的栈进行删除,相当于取出不为空的队列中的数据放到为空的队列中&#x…

【低照度图像增强系列(3)】EnlightenGAN算法详解与代码实现

前言 ☀️ 在低照度场景下进行目标检测任务,常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题,给检测带来一定的难度。 🌻使用图像增强模块对原始图像进行画质提升,恢复各类图像信息,再使用目标检…

约数个数和约数之和算法总结

知识概览 约数个数 基于算数基本定理,假设N分解质因数的结果为 可得对于N的任何一个约数d,有 因为N的每一个约数和~的一种选法是一一对应的,根据乘法原理可得, 一个数的约数个数为 约数之和 一个数的约数之和公式为 多项式乘积的…

汽车IVI中控开发入门及进阶(十二):手机投屏

前言: 汽车座舱有车载中控大屏、仪表/HUD多屏的显示能力,有麦克风/喇叭等车载环境更好的音频输入输出能力,有方控按键、旋钮等方便的反向控制输入能力,还有高精度的车辆数据等。但汽车座舱中控主机硬件计算能力升级迭代周期相对较长,汽车的应用和服务不够丰富。现在很多汽…

持续集成Jmeter+Jenkins+Ant

在开始这篇文章之前,我要先为大家解答2个疑惑: 第一点,我们为什么要在项目中进行接口自动化测试?好处是什么? 相对于UI层面,接口的测试的收益是巨大的,能在最短的时间发现重要的问题。接口在迭…

【Vue】文件管理页面制作

<template><div><div style"margin: 10px 0"><el-input style"width: 200px" placeholder"请输入名称" suffix-icon"el-icon-search" v-model"name"></el-input><el-button class"ml…

VBA_NZ系列工具NZ11:VBA光标跟随策略

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

python_数据可视化_pandas_导入CSV数据

目录 1.导入库 2.导入CSV文件 3.指定分隔符 4.指定读取行数 4.指定读取列数 5.读取文件或文件的路径中有中文 1.导入库 import pandas as pd 2.导入CSV文件 导入时要指定编码格式 data pd.read_csv(D:/desktop/TestCSV.csv,encodinggbk)print(data) 3.指定分隔符 默认…

Mybatis——多表查询

目录 一、简介 二、业务环境的准备 2.1、准备工作&#xff1a; 2.2、SQL 三、一对一和一对多 Sql语句&#xff1a; POJO OrderMapper OrderMapper.xml Test测试类 运行结果 一、简介 MyBatis 是一个优秀的持久层框架&#xff0c;它提供了强大的支持来执行数据库操作&am…

概述:利用大模型 (LLMs) 解决信息抽取任务

论文标题&#xff1a;Large Language Models for Generative Information Extraction: A Survey 论文链接&#xff1a;https://arxiv.org/pdf/2312.17617.pdf 论文主要探讨了大型语言模型&#xff08;LLMs&#xff09;在生成式信息抽取&#xff08;IE&#xff09;任务中的应用…

Scala入门到放弃—04—集合

文章目录 集合数组ListSetMapTuple其他 集合 数组 可变数组 package org.example object ArrayApp extends App{//继承App后直接直接调用函数&#xff0c;不需要main//println("hello")val a new Array[String](5)a(0)"hello"println(a(0))val b Array…

Linux C/C++ 显示NIC流量统计信息

NIC流量统计信息是由操作系统维护的。当数据包通过NIC传输时&#xff0c;操作系统会更新相关的计数器。这些计数器记录了数据包的发送和接收数量、字节数等。通过读取这些计数器&#xff0c;我们可以获得关于网络流量的信息。 为什么需要这些信息? 可以使用这些信息来监控网络…

怎么投稿各大媒体网站?

怎么投稿各大媒体网站&#xff1f;这是很多写作者及自媒体从业者经常面临的问题。在信息爆炸的时代&#xff0c;如何将自己的文章推送到广大读者面前&#xff0c;成为了一个不可避免的挑战。本文将为大家介绍一种简单有效的投稿方法——媒介库发稿平台发稿&#xff0c;帮助大家…

不知道题目是啥

本题是学校的集训里的题&#xff0c;所有不知道题目名字是啥&#xff0c;直接看题目就好 解题思路&#xff1a;因为字符串只含有小写字母&#xff0c;所以可以创建两个数组分别来存s和t的每个字母出现次数&#xff0c;然后遍历数组&#xff0c;如果s字符串中的某个字母比t的小&…

Python GIL 一文全知道!

GIL 作为 Python 开发者心中永远的痛&#xff0c;在最近即将到来的更新中&#xff0c;终于要彻底解决了&#xff0c;整个 Python 社群都沸腾了 什么是GIL&#xff1f; GIL是英文学名global interpreter lock的缩写&#xff0c;中文翻译成全局解释器锁。GIL需要解决的是线程竞…

云卷云舒:kubernetes简介

Kubernetes是由google公司在2014年发布的一款开源的容器编排引擎&#xff0c;用于容器化应用程序的自动化部署、扩展与管理。它能够编排多种容器任务&#xff0c;涵盖虚拟机集群管理、负载均衡以及网络流量分配等等。2017年&#xff0c;aws、微软云、阿里云等等著名的云计算公司…

文献阅读1

A Hierarchical Representation Network for Accurate and Detailed Face Reconstruction from In-The-Wild Images 会议/期刊&#xff1a;CVPR 2023&#xff1b;阿里达摩院&#xff1b;Biwen Lei 概述&#xff1a;这是一篇单张图片三维人脸重建的论文&#xff0c;这篇论文的…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系&#xff1b; 数据库注入&#xff1a;access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入&#xff1a;数字型、字符型、搜索型、加密型&#xff08;base63 json&#xff09;等提交方式注入&#xff1a;get、post、…

ChatGPT提示词大赏:GPT Prompts Hub 2024年最新ChatGPT提示词项目

&#x1f31f; GPT Prompts Hub &#x1f31f; English | 简体中文 Security Prompts | GPTS Prompts 欢迎来到 “GPT Prompts Hub” 存储库&#xff01;&#x1f31f; 探索并分享高质量的 ChatGPT 提示词。培养创新性内容&#xff0c;提升对话体验&#xff0c;激发创造力。…

创建型模式 | 建造者模式

一、建造者模式 1、原理 建造者模式又叫生成器模式&#xff0c;是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来&#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现&#xff08;属性&#xff09;的对象。创建者模式是一步一步创建一个复杂的对象&#xf…