如何使用MySQL统计当月每日收益金额

news2024/12/26 10:33:59

 如果要实现上图这个效果,这个SQL应该怎么写呢?

目录

1、实现思路

2、SQL实现


1、实现思路

首先,我们先实现查询当月每日的日期 。然后将查询结果与需要统计的表进行左连接即可。

SELECT DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRENT_DATE())-1) DAY) + INTERVAL (t4.i*1000 + t3.i*100 + t2.i*10 + t1.i) DAY) AS date
FROM
    (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t1,
    (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t2,
    (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t3,
    (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t4
WHERE
    DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRENT_DATE())-1) DAY) + INTERVAL (t4.i*1000 + t3.i*100 + t2.i*10 + t1.i) DAY) <= LAST_DAY(CURRENT_DATE())

 比如我的表结构是这样的。

 2、SQL实现

SELECT dates.date, IFNULL(SUM(cms_recharge_record.amount), 0) AS total
FROM (
    SELECT DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRENT_DATE())-1) DAY) + INTERVAL (t4.i*1000 + t3.i*100 + t2.i*10 + t1.i) DAY) AS date
    FROM
        (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t1,
        (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t2,
        (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t3,
        (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t4
    WHERE
        DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRENT_DATE())-1) DAY) + INTERVAL (t4.i*1000 + t3.i*100 + t2.i*10 + t1.i) DAY) <= LAST_DAY(CURRENT_DATE())
) AS dates
LEFT JOIN cms_recharge_record ON DATE(dates.date) = DATE(cms_recharge_record.create_time) AND MONTH(dates.date) = MONTH(cms_recharge_record.create_time)
GROUP BY dates.date
ORDER BY dates.date;

SQL解释:(解释来源于ChatGPT)

1、首先,使用子查询生成一个包含当月每天日期的临时表,子查询中的四个子查询(t1, t2, t3, t4)用于生成从0到9的数字序列,通过计算日期的偏移量来生成每天的日期。这样可以确保每天都有日期记录。

2、然后,使用左连接(LEFT JOIN)将临时表(dates)与cms_recharge_record表进行连接。连接条件是日期相等,并且月份相等。

3、使用IFNULL函数来处理当日没有收益记录的情况,将收益金额设置为0。

4、最后,使用GROUP BY对日期进行分组,并使用SUM函数计算每日的收益金额。

5、使用ORDER BY对日期进行排序,以确保结果按照日期的升序排列。

这样基本上就能达到我们的要求,最后将查询结果封装成自己需要的数据格式即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务springcloud 10.config配置中心框架和rabbitmq的安装

config配置中心的作用&#xff1a;项目的yml 配置文件保存到 git 服务器&#xff0c;例如 github.com 或 gitee.com 微服务启动时&#xff0c;从服务器获取配置文件 1.新建 “Project”,命名为 config。注意这里的不是maven项目&#xff0c;而是project 2.将sp02,sp03,sp04,s…

git常用命令之Fetch

4. Fetch 命令-----------------------------------------------------------------------------作用延展阅读git fetch1. 拉取「远程仓库」的所有远程分支的最新Commit-ID 记录在 .git/FETCH_HEAD 文件中.若有多个分支则 FETCH_HEAD 内会有多行数据&#xff0c;该文件首行对应…

dbca添加实例时无法发现对方主机

有个12.2集群环境&#xff0c;需要添加一个实例&#xff0c;直接图形化启动dbca&#xff0c;第四步时只能发现本机&#xff0c;无法识别到另外一个节点&#xff0c;如下图 通过排查发现是oracle用户的密码过期了&#xff0c;细节如下 [roothydb1 ~]# su - grid Last login: W…

C++11关键字

decltype 根据表达式的类型自动推导类型 int main(void) {decltype(x) c 21.1; //赋值decltype((x)) d c; // 是一个引用decltype(x) e c; //d 120;cout << sizeof(int) << endl;cout << sizeof(c) << " c" << c << endl;…

【Rust】所有权

文章目录 所有权stack与heap所有权存在的原因所有权规则变量作用域String类型内存和分配变量与数据交互的方式1.Move2.Clone3.Copy 所有权与函数返回值与作用域引用借用可变引用悬空引用Dangling References引用的规则切片字符串切片将字符串切片作为参数传递其他类型的切片 所…

1.2 matlab信号分析编程基础

1.画正弦波 xlinspace(0,2*pi,100); ysin(x); plot(x,y);2.画方波 xlinspace(0,4*pi,100); ysquare(x); plot(x,y);3.矩阵赋值 4.标准函数 5.画图 title&#xff1a;标题 grid&#xff1a;开关网格线 叠加多条曲线 3.GUI画正弦波 Fs 44100; dt 1.0/Fs; T 1; N T/dt…

Acer宏碁笔记本电脑Aspire蜂鸟FUN S50-51原装Windows10系统镜像,恢复出厂系统

Acer宏碁笔记本电脑Aspire蜂鸟S50-51原厂Win10系统工厂模式恢复原装出厂OEM系统 系统自带所有驱动、办公软件、出厂主题壁纸LOGO、 Acer Care Center、Quick Access等预装程序 所需工具&#xff1a;32G或以上的U盘&#xff08;非必需&#xff09; 文件格式&#xff1a;多个I…

Java垃圾搜集算法和垃圾回收算法

垃圾回收主要针对的是JVM的堆内存&#xff0c;分为新生代和老年代。 按照以前的叫法&#xff0c;还有一个永久代&#xff0c;它在方法区里保存了class信息、静态变量、常量池等。 从jdk-1.8开始&#xff0c;方法区的实现发生了一些变化&#xff0c;取消了永久代的概念&#xff…

墨迹api实现天气预测

文章目录 需求背景解决效果接口地址index.vueweather.vue图标文件 视频效果 需求背景 使用墨迹天气api实现天气预报&#xff0c;空气质量预报功能 解决效果 接口地址 墨迹天气 index.vue <template><div class"dqhjjc-wrap"><div class"fir…

pytorch快速入门中文——03

神经网络 原文&#xff1a;https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#sphx-glr-beginner-blitz-neural-networks-tutorial-py 可以使用torch.nn包构建神经网络。 现在您已经了解了autograd&#xff0c;nn依赖于autograd来定义模型并对其进…

win10系统打开程序和功能的几种方式介绍

一&#xff0c;简介 在工作中常常会用到安装和卸载软件的功能&#xff0c;需要打开“程序和功能”&#xff0c;本文主要介绍如几种打开“程序和功能”的方法&#xff0c;供参考。 二&#xff0c;四种方法介绍 四种方法分别是&#xff1a; 从控制面板打开&#xff1b;通过运…

VsCode尝试在目标目录创建文件时发生一个错误

桌面右击vscode图标以管理员身份运行就可以了 结束语&#xff1a; 希望这篇文章能帮助到大家&#xff0c;如有不对之处&#xff0c;还请指正。愿我们一起成长。

按unicode值比较数组中的字符串元素numpy.compare_chararrays()方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对比两个数组中对应位置 的元素的unicode值大小 numpy.compare_chararrays() [太阳]选择题 关于以下代码的输出结果是? import numpy as np a np.array(["a","B","…

联邦聚合(FedAvg、FedProx、SCAFFOLD)

目录 联邦聚合算法对比(FedAvg、FedProx、SCAFFOLD) 解决问题 FedAvg FedProx SCAFFOLD 实验结果 联邦聚合算法对比(FedAvg、FedProx、SCAFFOLD) 论文链接&#xff1a; FedAvg&#xff1a;Communication-Efficient Learning of Deep Networks from Decentralized Data …

在线预览文件

当我们前端小伙伴在码代码的时候&#xff0c;总会不约而同地遇到一个问题&#xff1a;上传文件。一旦文件成功上传&#xff0c;后端就会慷慨地给我们一个下载地址&#xff0c;这是怎么实现在线预览或者直接下载呢&#xff1f;fliencn 是后端给的地址这种是另外起一个标签页预览…

【Android Framework系列】第3章 Zygote进程相关

1 Zygote简介 Zygote是Android中最重要的一个进程&#xff0c;Zygote进程和Init进程、SystemServer进程是Android最重要的三大进程。Zygote是Android系统创建新进程的核心进程&#xff0c;负责启动Dalvik虚拟机&#xff0c;加载一些必要的系统资源和系统类&#xff0c;启动sys…

DevExpress WinForms日程/日历组件,可轻松创建信息管理解决方案!(一)

通过DevExpress WinForms完全可定制的Scheduler和Calendar组件&#xff0c;可以轻松地提供Outlook启发的调度/信息管理解决方案&#xff0c;Scheduler控件提供了多个日历视图选项(日、周、月、时间轴等)&#xff0c;并包括一个全面的内置和完全可定制的编辑表单集合。 PS&…

项目经理专用-项目周报模板-yyyymmdd-大型公司可用项目

作为一个项目经理或者子项目经理&#xff0c;肯定要面对各种文档&#xff0c;尤其是各种 *了狗的周报月报&#xff0c;有的甚至有日报&#xff0c;不厌其烦。 这个时候&#xff0c;一套规整的周报模板就可以省我们太多事&#xff0c;而且看起来也很专业。 今天分享一套自己用…

5.7.2 UDP协议格式(一)——UDP差错控制

5.7.2 UDP协议格式&#xff08;一&#xff09;——UDP差错控制 前面我们学习了UDP数据报格式&#xff08;5.7.1 UDP概述&#xff09;我们知道UDP只是在IP数据报服务基础上增加了端口的复用和分用功能&#xff0c;以及差错控制的功能&#xff0c;这里我们就一起来学习一下UDP的…

破局之作:首部开源 AIGC 软件工程应用电子书《构筑大语言模型应用:应用开发与架构设计》...

TL;DR 版&#xff1b; 在线&#xff1a;https://aigc.phodal.com 下载 1&#xff1a;https://github.com/phodal/aigc/releases 下载 2&#xff1a;https://pan.baidu.com/s/1wGc75vVHaZwvZyHeltyt8w?pwdphod 2023 年的上半年里&#xff0c;我&#xff08;phodal&#xff09;和…