SQL 同比、环比计算公式及实例演示
同比数据计算公式:
同比:一般情况下是今年第n月与去年第n月比
计算方式:同比增长率=(本期数-同期数)÷同期数×100%
所以要有个本期数据与同期数据一一对应的表,那就要本期数据与同期数据分离
环比数据计算公式:
环比:一般是指报告期水平与前一时期水平之比,此处指本月数据与上月数据(或者本日数据与上日数据)
计算方式:环比增长速度=(本期数-上期数)÷上期数×100%
CREATE TABLE SalesDetail(
ID int, --序号
DepartName varchar(50), --部门
Sales decimal(10,2), --销售量
SalesDate Datetime --销售日期
)insert into SalesDetail(ID, DepartName, Sales, SalesDate)
select 1, '营销一部', 300, '2006-7-1'
UNION ALL select 2, '营销二部', 500, '2006-7-1'
UNION ALL select 3, '营销三部', 800, '2006-8-1'
UNION ALL select 4, '营销一部', 600, '2006-8-1'
UNION ALL select 5, '营销二部', 800, '2006-8-1'
UNION ALL select 6, '营销一部', 400, '2007-7-1'
UNION ALL select 7, '营销二部', 800, '2007-7-1'
UNION ALL select 8, '营销三部', 700, '2007-8-1'
UNION ALL select 9, '营销一部', 600, '2008-7-1'
UNION ALL select 10, '营销二部', 700, '2008-7-1'select * from SalesDetail-- 计算环比
select c.DepartName as 部门, convert(varchar(10), c.SalesDate, 23) as 对比年月, c.Sales as 本月销售总量, d.Sales as 上月销售总量, case when d.Sales is null or d.Sales=0 then '无穷大' else cast(cast((isnull(c.Sales, 0)-isnull(d.Sales,0))*100/isnull(d.Sales, 0) as decimal(10,2)) as varchar(50))+'%' end as 环比 from SalesDetail c left join
(select a.DepartName as DepartName, a.Sales as Sales, a.SalesDate as lsSalesDate, b.SalesDate as SalesDate from SalesDetail a join SalesDetail b on a.SalesDate=DateAdd(month, -1, b.SalesDate) and a.DepartName=b.DepartName) d
on c.SalesDate=d.SalesDate and c.DepartName=d.DepartName-- 计算同比
select c.DepartName as 部门, convert(varchar(10), c.SalesDate, 23) as 对比年月, c.Sales as 本月销售总量, d.Sales as 去年同期销售总量, case when d.Sales is null or d.Sales=0 then '无穷大' else cast(cast((isnull(c.Sales, 0)-isnull(d.Sales,0))*100/isnull(d.Sales, 0) as decimal(10,2)) as varchar(50))+'%' end as 同比 from SalesDetail c left join
(select a.DepartName as DepartName, a.Sales as Sales, a.SalesDate as lsSalesDate, b.SalesDate as SalesDate from SalesDetail a join SalesDetail b on a.SalesDate=DateAdd(year, -1, b.SalesDate) and a.DepartName=b.DepartName) d
on c.SalesDate=d.SalesDate and c.DepartName=d.DepartName
同比效果:
环比效果:
SQL 同比、环比计算公式及实例演示相关推荐
- 使用 SQL 实现同比环比分析
场景描述 在做数据分析时,经常会需要展示同比和环比的数据,可以通过 SQL 来完成同比和环比的计算,再配合数据可视化工具进行展示,每个月都会自动展示当月数据与上月的对比(环比),以及当月数据与去年同期 ...
- Oracle 数据库直接执行本地sql文件、sql脚本实例演示
@ + sql 文件路径即可执行 sql 文件里的 sql 语句. 实例演示: 我要执行的 sql 文件路径是 C:\Users\Administrator\Desktop\delete.sql , ...
- PL/SQL 数据库连接工具的下载、安装与使用实例演示
PL/SQL 工具的安装与使用 第一章:PL/SQL 工具的安装 ① PL/SQL 工具的下载与安装 ② PL/SQL 工具的 activate ③ PL/SQL 工具的使用演示 ④ PL/SQL 远 ...
- 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示
Oracle 数据库转达梦数据库实例演示 第一章:达梦数据库用户数据准备 ① 直接执行 sql 语句创建用户(该步执行完可直接第二章) ② 使用工具创建用户 第二章:达梦数据库转库 oracle 转达 ...
- 国产化人大金仓数据库转库工具:oracle12c数据库转kingbase8.6人大金仓数据库实例演示
oracle12c数据库转人大金仓数据库实例演示 第一章:数据准备 ① 人大金仓建库建用户 ② 人大金仓授权表空间 ③ 人大金仓创建 schema 表 第二章:转库演示 ① 转库工具准备 ② 创建源库 ...
- Java 技术篇-java连接并操作数据库实例演示,执行查询、插入、更新和删除操作
Java 操作数据库 第一章:Java 代码四个类实现 ① 项目结构展示 ② 数据库连接类 ③ 数据库查询类 ④ 数据库更新类 ⑤ 数据库主类 第二章:查询和更新操作实例演示 ① 查询操作演示 ② 更 ...
- php 中curd表达啥,CURD语句的基本语法和PDO中操作数据表的基本步骤实例演示增删改查命令 2019年07月24日 23时10分...
一.常用的CUR 最常用的就是: `CURD` 增删改查 它代表创建(Create).更新(Update).读取(Read)和删除(Delete)操作. 新增操作语法 * SQL规范: `INSE ...
- c#中connect函数_Flink算子使用方法及实例演示:union和connect
Flink的Transformation转换主要包括四种:单数据流基本转换.基于Key的分组转换.多数据流转换和数据重分布转换.读者可以使用Flink Scala Shell或者Intellij Id ...
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web
实例演示使用RDIFramework.NET 框架的工作流组件 进行业务流程的定义-请假申请流程-Web 参考文章: RDIFramework.NET - 基于.NET的快速信息化系统开发框架 - 系 ...
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm
实例演示使用RDIFramework.NET 框架的工作流组件 进行业务流程的定义-请假申请流程-WinForm 参考文章: RDIFramework.NET - 基于.NET的快速信息化系统开发框架 ...
最新文章
- easyui toolbar分隔线
- breeze源码阅读心得
- hbase性能优化2
- python怎么写测试脚本语言_手把手带你,用Python写一个Monkey自动化测试脚本!!!...
- 洛谷P1119 灾后重建 图论 脑洞题
- 蝴蝶优化算法_算法|FFT基础及各种常数优化,5万字笔记:公式推导+代码模板...
- 微信支付—微信H5支付「PC端扫码支付」
- TCP,UDP学习总结
- 【git】搭建git服务器
- 代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
- AI驱动智能化日志分析 : 通过决策树给日志做聚类分析
- Springboot初始化过程(1.5.9.RELEASE)(一)
- VOC2007数据集
- mysql 多重循环_SQL循环语句 详解
- Apache和Httpd是什么关系
- 表达无序列表语义的html标签是,HTML语义标签的介绍和常用的语义标签
- css 解决因为书名号不满一行就换行情况
- ARM 是什么,ARM的意思,ARM介绍
- TypeScript代理模式/委托模式
- 大一新生的第一篇博客