sql 计算周环比wow_Oracle计算环比的方法
环比就是今年第n月与第n-1月或第n+1月比;同比就是今年第n月与去年第n月比。
建测试表,假设是个销售数量表:
create table t (dt date,cnt number);
随便插入些测试数据,最后表的内容如下:
DT CNT
---------- ----------
2012-02-09 15
2012-02-21 2
2012-03-23 1
2012-03-23 5
2012-04-23 2
2012-05-12 20
2012-07-01 20
2012-07-21 20
显示环比,如果某个月没有销售,就有点儿麻烦。
先想个办法,显示本年度的1至12月,有个很有技巧的技术来实现:
SQL> set pagesize 20
SQL> with m as (select '2012-'||lpad(rownum,2,'0') v from dual connect by level<=12) select * from m;
V
---------
2012-01
2012-02
2012-03
2012-04
2012-05
2012-06
2012-07
2012-08
2012-09
2012-10
2012-11
2012-12
接下来就容易了,两个表外连,使用lag统计函数就可以了。
with m as (select '2012-'||lpad(rownum,2,'0') v from dual connect by level<=12)
select m.v "月份",nvl(sum(t.cnt),0) "销售数量",
lag(nvl(sum(t.cnt),0),1) over (order by m.v) "上月销量数量",
nvl(sum(t.cnt),0)-lag(nvl(sum(t.cnt),0),1) over (order by m.v) "环比增加量",
round((case when nvl(sum(t.cnt),0)=0 then null else (nvl(sum(t.cnt),0)-lag(nvl(sum(t.cnt),0),1) over (order by m.v))/nvl(sum(t.cnt),0) end)*100,1) "环比增加比例(%)"
from m left outer join t
on m.v=to_char(t.dt,'yyyy-mm') group by m.v order by 1
月份 销售数量 上月销量数量 环比增加量 环比增加比例(%)
--------- ---------- ------------ ---------- ---------------
2012-01 0
2012-02 17 0 17 100
2012-03 6 17 -11 -183.3
2012-04 2 6 -4 -200
2012-05 20 2 18 90
2012-06 0 20 -20
2012-07 40 0 40 100
2012-08 0 40 -40
2012-09 0 0 0
2012-10 0 0 0
2012-11 0 0 0
2012-12 0 0 0
作者 wallimn
sql 计算周环比wow_Oracle计算环比的方法相关推荐
- sql 计算周环比wow_通过对周进行编号计算周环比(WOW)
上周我们分享了如何在Power Pivot中对月份进行编号,今天我们和大家一起看一下如何通过对周进行编号,来计算周环比(WOW). 先来看一下我们的示例模型: 模型由销售记录表和日期表组成,我们已经创 ...
- SQL 难点解决:循环计算
SQL 虽然可以对集合中的记录进行循环计算, 但在循环计算过程中利用中间变量.同时计算多个值.前后记录访问.减少循环次数等方面差强人意.而集算器 SPL 则要直观许多,可以按自然思维习惯写出运算.这里 ...
- 5. 数据库题(以个人熟悉数据库为准、按要求写出sql) (1) 计算每个人的总成绩并排名(要求显示字段:学号,姓名,总成绩) (2) 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最
5. 数据库题(以个人熟悉数据库为准.按要求写出sql) (1) 计算每个人的总成绩并排名(要求显示字段:学号,姓名,总成绩) (2) 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高 ...
- SQL 中的生成列/计算列以及主流数据库实现
文章目录 什么是生成列? Oracle 中的虚拟列 MySQL 中的生成列 SQL Server 中的计算列 PostgreSQL 中的存储生成列 SQLite 中的生成列 什么是生成列? 在 SQL ...
- SQL使用分组查询并计算条数
sql分组查询使用COUNT计算每一组的条数并添加条件 SELECTf.jxlx,COUNT(*) AS 全部,COUNT( CASE WHEN ( f.zt = 1 ) THEN jxlx END ...
- 【3 - 查询】Sql Server - 郝斌(计算列、distinct、between、in、top、null、order by、模糊查询、聚合函数[主要是count()函数] )
课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 查询(最重要,难度最大) (一)大纲 (二)Scott 表 下载与导入SQ ...
- java 日期计算类_java日期计算工具类【包含常用的日期计算方法】
package com.test; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Cal ...
- 计算机组原理ppt,计算机组原理1.ppt
计算机组原理1 答案: ADD R0,R1, 指令格式和内容: 指令中给出操作码和 R0.R1的编号: 埂恨吠唆美舌攒兰锄番觉岂恳诱同括宪响侧拙捕跺荤施休董参岳虑哼黔德计算机组原理1计算机组原理1 指 ...
- auc计算 matlab代码,AUC计算
思路 为最终比较划分好测试集和不存在边集[全集1-train-test-对角元],根据集合中非零元[即边的数目]构建比较矩阵test_rd[比较n次,随机生成n个值右取整作为抽取的要比较的边],下一步 ...
- 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet
对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...
最新文章
- 结合泛函极值_第2章泛函的极值.doc
- python 文件写入多个参数_pandas 把数据写入txt文件每行固定写入一定数量的值方法...
- python给图片加半透明水印_Python 批量加水印就这么简单!
- 区块链产业生态、存在问题及政策建议|一文读懂新趋势
- Spring攻略学习笔记(13)------继承Bean配置
- MYSQL主从不同步延迟原理分析及解决方案
- 如何在ECLIPSE中使用MVN CLEAN INSTALL
- 索引越界异常Exception java.lang.IndexOutOfBoundsException
- 获取access_token报错errcode: 40125,errmsg: invalid appsecret, view more at http://t.cn/RAEkdV
- keil c语言字符型变量的值,Keil C语言
- mysql 二次分组_MySQL分组
- “哥”不信“神马浮云”
- 用计算机弹出音乐谱,抖音计算器音乐乐谱有哪些?抖音计算器弹奏简谱音乐大全...
- 360oauth token是什么意思_京东开放服务平台(JOS)关于token问题汇总(一)
- 打印钻石图形python_Python pandas高效数据处理之绘图
- 白屏、首屏的定义、影响因素、优化方法
- 如何计算机打开桌面文件,电脑系统奔溃如何找回桌面文件?系统损坏桌面文件如何拷贝出来...
- JavaScript中linux时间戳与日期的转换
- Android小项目———— 冰炭不投de小计算器
- 深入浅出URL、主机名、域名
热门文章
- linux 查看外网ip信息
- 校OJ P1220 -- zyf的现状
- 企业微信重磅更新!离职继承无需客户同意、群自动踢人、群成员去重...
- 微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!
- 双样本T检验-P-T和T-T检验
- 《根道果:禅修的方法与次第》读后感
- linux桌面小程序开发日记_1(pyqt5 + yolov5)
- 不定期备考小tips[常微][2] #20210528
- LookaHead优化器
- Android实现推送PushService通知No…