sql语句下的同比,环比操作
试题:有三个表
表一:商品销售备注
表二:商品备注
市场需求:查阅2020年,每星期的营业额,和环比环比,并依照年月展开或边次序
建资料库建表填入统计数据
偷个懒,那些句子就先略去了
给看个截屏
ps: 建表时天数要优先选择datetime ,前面要对天数展开操作方式的~
思路:分步操作方式
获得每星期的统计数据
首先的抽取天数,和获得每个月的营业额,要有 营业额,三个表肯定是要连接起来的
------- 获取天数
YEAR(字段名)—获取年份
MONTH(字段名)----获取天数
此处使用左连接的原因:是要补充商品销售表里单品的价格,要以左表为基准,要用了左连接
结果:
单步操作方式获得环比统计数据
环比:一般情况下是今年第n月与去年第n月比
计算方式:环比增长率=(本期数-同期数)÷同期数×100%
所以要有个本期统计数据与同期统计数据一一对应的表,那就要本期统计数据与同期统计数据分离
有了第一步之后很容易获得统计数据
本期统计数据:
同期统计数据:
下面就要展开表的关联了
本期、同期的区别就是年份不一样,月份一样呗,那就用月份作为连接点展开连接,代码和结果截屏如下,环比就完成了~
计算的是本期,本期统计数据是关键所以这边展开的是右连接—因为本期统计数据放在右边,放左边用左连接就好了
ps:如果觉得这边跳了步骤的话可以将查阅结果改成 * 先去查看关联之后的表
单步操作方式获得环比统计数据
环比:一般是指报告期水平与前一时期水平之比,此处指本月统计数据与上月统计数据
计算方式:环比增长速度=(本期数-上期数)÷上期数×100%
肯定也是要有表的关联了呗,怎么连呢???
既然是计算2020年的环比,那就以要计算的为基础统计数据,展开表的关联
上面已经有全部的年份、月份对应的统计数据,这一步主要是展开表的关联
三个表展开关联:
-1 2020年统计数据的表,即判断条件设置年份为2020的查阅结果表
-2 考虑到2020年一月份对应的是2019年的12月份,所以这个张表是不加判断条件的表,包含了2019年和2020年统计数据的表
解析以下这个:
这个是针对2020年2月份的统计数据,2020 02-06 的统计数据与2020 01-05的统计数据一一对应
按关联前的,a(月份)和g(月份)应该是相等的,因为对比的是上一期的,所以要错开,大的减掉等与小的
那一月份怎么办呢??
这边就不能用上面的办法了,跨年了,所以需要用and连接的方式展开限制,而且需要限定为2019年的12月份,这边因为统计数据比较少,不限定年份也没问题
三个部分用 or 并列存在,三个条件要分别用括号括起来,否则这个查阅条件等于没有。。。。
把* 换成
执行查阅:
最后一步,将统计数据放到一个表里~
通过上述说明,可以发现都关联了2020年统计数据查阅的表,所以可以将这个表放在中间 ,三个表展开关联(也是操作方式环比统计数据用右连接的原因)
结束!