MYSQL求月份同比数据和环比数据

1.需求题目如下 

22f42bfc27c0487793f8f8ff6eee737c.jpeg

1.首先求出每月每个account_id 对应的amount金额

 2f0efb36446544d0b5e55a500f759764.png

2.利用表自关联,获取上月,上年对应月份及金额,

关联条件利用 主表月份-1个月=上月月份 和 主表月份-1年=上年月份

70b9261cd5854f588cb3dcf520dffb88.png

3.最后求同比和环比

 b224ab3addc14daa8a7ba427920f92f8.png

附代码及测试数据

CREATE TABLE transactions (  transaction_id VARCHAR(255),  account_id VARCHAR(255),  amount DECIMAL(10, 2),  transaction_date DATE  
);INSERT INTO transactions (transaction_id, account_id, amount, transaction_date) VALUES  
('0C', 'C1', 100.00, '2021-01-15'),  
('10', 'C1', 150.00, '2021-02-15'),  
('01', 'C2', 200.00, '2021-03-15'),  
('02', 'C2', 250.00, '2021-04-15'),  
('03', 'C1', 300.00, '2022-01-20'),  
('04', 'C1', 350.00, '2022-02-20'),  
('05', 'C2', 400.00, '2021-02-18'),  
('06', 'C2', 450.00, '2021-03-18'),  
('07', 'C1', 500.00, '2021-04-18'),  
('08', 'C2', 550.00, '2022-02-18');WITH MonthlyTotals AS (SELECTaccount_id,substr(transaction_date,1,7) AS month_year,SUM(amount) AS total_amountFROMtransactionsGROUP BYaccount_id,substr(transaction_date,1,7)
),
LaggedMonthlyTotals AS (SELECTmt.account_id,mt.month_year,mt.total_amount,sy.month_year as month_year_sy,sn.month_year as month_year_sn,sy.total_amount as prev_month_amount,sn.total_amount as prev_year_same_month_amountFROMMonthlyTotals mtleft join MonthlyTotals sy on mt.account_id=sy.account_id and DATE_FORMAT(  DATE_SUB(STR_TO_DATE(CONCAT(mt.month_year, '-01'), '%Y-%m-%d'), INTERVAL 1 Month ), '%Y-%m')=sy.month_yearleft join MonthlyTotals sn on mt.account_id=sn.account_id and DATE_FORMAT(  DATE_SUB(STR_TO_DATE(CONCAT(mt.month_year, '-01'), '%Y-%m-%d'), INTERVAL 1 YEAR ), '%Y-%m')=sn.month_year
)
SELECTlmt.account_id,lmt.month_year,lmt.total_amount,-- 计算环比百分比CASEWHEN lmt.prev_month_amount IS NULL THEN NULLELSE ((lmt.total_amount - lmt.prev_month_amount) / lmt.prev_month_amount) * 100END AS 环比,-- 计算同比百分比CASEWHEN lmt.prev_year_same_month_amount IS NULL THEN NULLELSE ((lmt.total_amount - lmt.prev_year_same_month_amount) / lmt.prev_year_same_month_amount) * 100END AS 同比
FROMLaggedMonthlyTotals lmtorder by account_id,month_year;

 

 

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

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

相关文章

Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring

基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置,使得数据只能单向遍历。 示意图如下: 双向链表中的每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后…

皮肤病检测-目标检测数据集(包括VOC格式、YOLO格式)

皮肤病检测-目标检测数据集(包括VOC格式、YOLO格式 数据集: 链接:https://pan.baidu.com/s/1XNTo-HsBCHJp2UA-dpn5Og?pwdlizo 提取码:lizo 数据集信息介绍: 共有 2025 张图像和一一对应的标注文件 标注文件格式提供…

说说海外云手机的自动化功能

在全球社交媒体营销中,通过自动化功能,企业不再需要耗费大量时间和精力手动监控和操作每台设备。这意味着,企业可以显著提升效率、节省成本,同时减少对人力资源的依赖。那么,海外云手机的自动化功能具体能带来哪些优势…

Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法

1,下载mat后安装,打开时提示 jdk版本低,需要升级到jdk17及以上版本,无奈就下载了jdk17,结果安装后提示没有jre环境,然后手动生成jre目录,命令如下: 进入jdk17目录:执行&…

基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

视频单目标跟踪研究

由于对视频单目标跟踪并不是很熟悉,所以首先得对该领域有个大致的了解。 视频目标跟踪是计算机视觉领域重要的基础性研究问题之一,是指在视频序列第一帧指定目标 后,在后续帧持续跟踪目标,即利用边界框(通常用矩形框表…

解决sortablejs+el-table表格内限制回撤和拖拽回撤失败问题

应用场景: table内同一类型可拖拽,不支持不同类型拖拽(主演可拖拽交换位置,非主演和主演不可交换位置),类型不同拖拽效果需还原,试了好几次el-table数据更新了,但是表格样式和数据不能及时保持…

ArrayList源码实现(一)

ArrayList源码实现(一) 1. ArrayList的大小是如何自动增加的? 初始化 在构造函数中,可以设定列表的初始值大小,如果没有的话默认使用,提供的静态数据 public ArrayList(int initialCapacity) {if (initi…

RabbitMQ应用

RabbitMQ 共提供了7种⼯作模式, 进⾏消息传递 一、七种模式的概述 1、Simple(简单模式) P:生产者,就是发送消息的程序 C:消费者,就是接收消息的程序 Queue:消息队列,类似⼀个邮箱, 可以缓存消息; ⽣产者…

UniApp基于xe-upload实现文件上传组件

xe-upload地址:文件选择、文件上传组件(图片,视频,文件等) - DCloud 插件市场 致敬开发者!!! 感觉好用的话,给xe-upload的作者一个好评 背景:开发中经常会有…

几个可以给pdf加密的方法,pdf加密详细教程。

几个可以给pdf加密的方法,pdf加密详细教程。在信息快速传播的今天,PDF文件已经成为重要的文档格式,被广泛应用于工作、学习和个人事务中。然而,随着数字内容的增加,数据安全和隐私保护的问题愈发凸显。无论是商业机密、…

CAT1 RTU软硬件设计开源资料分析(TCP协议+Modbus协议+GNSS定位版本 )

01 CAT1 RTU方案简介: 远程终端单元( Remote Terminal Unit,RTU),一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。 奇迹TCP RTUGNS…

OpenHarmony(鸿蒙南向)——平台驱动指南【PWM】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 PWM即脉冲宽度调制(Pulse Width Modul…

Flutter中使用FFI的方式链接C/C++的so库(harmonyos)

Flutter中使用FFI的方式链接C/C库(harmonyos) FFI plugin创建和so的配置FFI插件对so库的使用 FFI plugin创建和so的配置 首先我们可以根据下面的链接生成FFI plugin插件:开发FFI plugin插件 然后在主项目中pubspec.yaml 添加插件的依赖路径&…

排序--堆排序【图文详解】

二叉树的相关概念 叶子:没有子节点的节点叫叶子节点 大根堆:所有的父亲大于儿子 小根堆:所有的儿子大于父亲 父亲于儿子的的下标关系: 父亲的下标为i ,那么左孩子的下标为2*i1,右孩子的下标为2i2 子的下…

智源研究院与百度达成战略合作 共建AI产研协同生态

2024年9月24日,北京智源人工智能研究院(简称“智源研究院”)与北京百度网讯科技有限公司(简称“百度”)正式签署战略合作协议,双方将充分发挥互补优势,在大模型等领域展开深度合作,共…

tomcat服务搭建部署ujcms网站

tomcat服务搭建部署ujcms网站 关闭selinux和防火墙 setenforce 0 && systemctl stop firewalld安装java环境 #卸载原有java8环境 yum remove java*#上传java软件包,并解压缩 tar -xf openjdk-11.0.1_linux-x64_bin.tar.gz && mv jdk-11.0.1 jdk11…

Elasticsearch讲解

1.Elasticsearch基本知识 1.基本认识和安装 Elasticsearch是由elastic公司开发的一套搜索引擎技术,它是elastic技术栈中的一部分。完整的技术栈包括: Elasticsearch:用于数据存储、计算和搜索 Logstash/Beats:用于数据收集 Kib…

【学习笔记】地平线J3J5J6E对比

内容J3J5J6ECPU 4核Cortex-A53 1.2GHz 8核Cortex-A55 1.2GHz 6核Cortex-A78AE 1.5GHz MCU/ MStar 双核锁步Cortex-MStar 2核Cortex-R52 One DCLS core pairand one Split-Lock core 1.2GHz GPU// Mail-G78AE 800MHz 100 FP32 GFLOPS BPU 2*Bernoulli-architecture 5TOPS 2…