在工作的过程中,经常会使用到环比、同比,那关于如何用SQL去写环比和同比呢?非常简单,表自联以及interval函数,轻松实现。
interval 1 month,环比
interval 1 year ,同比

一、准备数据

为了快速理解,我建了一个表,关于订单金额的(数据是随机数,非真实数据)
数据格式如下:
数据尽量极简,所以就只有日期和订单金额。
(格式是之前一个面试官给我举的例子)

二、计算

1、月环比
代码:

##月环比
select substr(a.d,1,7) as month ,a.d,a.orderpay,b.dd,b.originalday,b.orderpay,
(a.orderpay-b.orderpay)/b.orderpay as month_rate
from
(select DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d') as d ,orderpay  from ordertable) a
left join
(select DATE_ADD(DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d'),INTERVAL 1 month )as dd
,DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d')as originalday,orderpay from ordertable) b
on a.d=b.dd

结果:
从结果可以看到,月环比的计算逻辑:在原有的时间加上一个月与原表连接即可得到本月与上个月的信息。结果有几个月份是null,原因是我造的数据没有11月份的,所以才没有计算,这个可忽略。

2、月同比
同比计算也很简单。同比这里是今年的N月,与去年的N月的比较。
代码:
逻辑没变,就是将月换成年即可。

##月同比
select substr(a.d,1,7) as month ,a.d,a.orderpay,b.dd,b.originalday,b.orderpay,
(a.orderpay-b.orderpay)/b.orderpay as month_ratefrom
(select DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d') as d ,orderpay  from ordertable) a
left join
(select DATE_ADD(DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d'),INTERVAL 1 year )as dd,DATE_FORMAT(CONCAT(datetime,'-01'),'%Y-%m-%d')as originalday,orderpay from ordertable) b
on a.d=b.dd

结果:

SQL计算月环比、月同比相关推荐

  1. 2021_lg_03.SQL实战:如何用sql计算用户留存问题

    如何用sql计算用户留存问题 一.留存 1 .留存的含义: 留存:指基准日到APP的用户在之后的n日当天返回APP的人数: 留存率 = 基准日之后的n天当日返回的用户数 / 基准日的用户数 * 100 ...

  2. sql计算时间差的datediff()函数怎么用

    sql计算时间差的datediff函数怎么用 一.定义 二.语法 三.举例 一.定义 DATEDIFF() 函数返回两个日期之间的天数. 二.语法 DATEDIFF(datepart,startdat ...

  3. C语言学习之购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。

    购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清. 设d为300 000元,p为6000元,r为1%.对求得的月份取小数点后一位,对第2位按四舍五入处理. #include & ...

  4. sql计算留存_SQL无所不能:DBA宝妈宝爸系列分享

    原文链接:https://www.modb.pro/db/22315 目前程序从功能上其实已经完全满足客户(当然我这里的客户都是指媳妇儿)需求,具体可参考: 使用SQL计算宝宝每次吃奶的时间间隔 - ...

  5. SQL计算宝宝吃奶的时间间隔(二)

    导读:之前,在"数据和云"公众号发表过一篇文章<如何使用SQL计算宝宝每次吃奶的时间间隔(分析函数的使用)>,本文为续篇,如何提升程序的易用性. 因为我工作繁忙,时常不 ...

  6. 如何使用SQL计算宝宝每次吃奶的时间间隔(文末含PPT)

    编者的话:搞好SQL可以做很多事情,比如说可以解决海盗分金的问题,可以用SQL把大象装进冰箱,还可以用SQL解决环环相扣的刑侦推理问题,近期,有位读者朋友投稿了"使用SQL计算宝宝每次吃奶的 ...

  7. calendar获取月份少一个月_VBA 技巧:计算一个月有多少天?

    VBA 技巧:计算一个月有多少天? 问题: 有时我们需要知道一个月有多少天,或者知道最后一天是31号还是30号 我们可以通过VBA代码来计算 Sub nb_days_month()'将日期传入变量,月 ...

  8. oracle 求一年多少天,SQL 计算一年有多少天

    SQL 计算一年有多少天,计算当前年份有多少天. SQL 计算一年有多少天 问题描述 计算当前年份有多少天. SQL 计算一年有多少天 解决方案 计算当前年份有多少天,等同于计算下一年的第一天和当前年 ...

  9. 在DB2中,使用sql 计算昨天、最后一天等日期

    在DB2中,使用sql 计算想要的日期值,比如昨天,上月的最后一天,下个月的最后一天等. /* 作者:宾晓辰 微信:BD_BXC MAIL:646501050@QQ.COM PHONE:1802626 ...

最新文章

  1. C++——类访问修饰符
  2. centos6/7安装gitlab
  3. 学计算机之路写一篇作文,学习之路作文
  4. 耳机的L和R是什么意思?
  5. commit git 删除文件夹_Git-git删除文件夹/文件(删除/不删除本地文件/文件夹)
  6. 安全界“圣经”DBIR 报告推翻了哪些“你以为的”数据泄漏情况?
  7. Mathcad绘制三维曲面图
  8. vs中的opt文件包含了整个宇宙
  9. Matlab深度学习工具箱的使用
  10. 软件是指示计算机运行所需的程序,计算机基础知识A.ppt
  11. java 时间计费_java 实现计费算法
  12. 高山仰止,景行行止,虽不能至,心向往之!软工大二狗的回顾与展望。
  13. 2021年中式面点师(中级)报名考试及中式面点师(中级)考试总结
  14. 【余压监控系统】实时性、数字化、智能化,自动化,连续动态监控
  15. JAVA音视频解决方案----音频处理方案
  16. springboot游泳池管理系统
  17. selenium自动化之登录淘宝自动下单案例
  18. 5 个行为让你更好...
  19. VMware设置共享文件夹之后Ubuntu中看不到怎么办?
  20. cisco单交换机实现基于端口的VLAN设计----计算机网络课设(含.pkt文件)

热门文章

  1. Android 4.2虚拟按键背景透明,Android 4.0 隐藏虚拟按键(导航栏)的方法
  2. C# 企业微信:开启消息接受接收消息推送消息
  3. 英语水平测试项目(黄军威、殷乐乐、张益维20180531)
  4. 4.链表LinkedList
  5. win7系统设置无线临时(计算机到计算机)网络 手机,Win7无线临时网络允许移动WIFI和“启用Internet连接共享”...
  6. 华硕天选如何改变屏幕亮度,以及键盘灯的效果
  7. v4l2_async_subdev_notifier_register 分析
  8. 数字孪生城市,智慧城市可视化技术解决方案案例
  9. Vue本地项目实现其他局域网电脑在线访问
  10. Python3不存在raw_input( )了