永发信息网

请教Oracle计算同比和环比sql语句

答案:3  悬赏:80  手机版
解决时间 2021-11-19 04:12
  • 提问者网友:佞臣
  • 2021-11-18 16:12
请教Oracle计算同比和环比sql语句
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-11-18 17:33
首先明确概念:
环比增长率=(本期数-上期数)/上期数*100% 反映本期比上期增长了多少。
同比增长率=(本期数-同期数)/同期数*100% 指和去年同期相比较的增长率。
数据表名:d_temp_data 
查询数据如下: 

查询的sql语句如下:
select a.*,
       nvl(round(money/lag(money) over(order by id)*100,2),'0')||'%' "同比",
       nvl(round(money/lag(money) over(partition by mon order by id)*100,2),'0')||'%' "环比"
from d_temp_data a


     id    iname   year   mon   money   同比   环比
----------------------------------------------------------------------
1 1 飞马股 2013 01 300 0% 0%
2 2 飞马股 2013 02 270 90% 0%
3 3 飞马股 2013 03 350 129.63% 0%
4 4 飞马股 2013 04 180 51.43% 0%
5 5 飞马股 2013 05 500 277.78% 0%
6 6 飞马股 2013 06 400 80% 0%
7 7 飞马股 2014 01 210 52.5% 70%
8 8 飞马股 2014 02 240 114.29% 88.89%
9 9 飞马股 2014 03 320 133.33% 91.43%
10 10 飞马股 2014 04 480 150% 266.67%
11 11 飞马股 2014 05 400 83.33% 80%
全部回答
  • 1楼网友:怙棘
  • 2021-11-18 19:26
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
  • 2楼网友:深街酒徒
  • 2021-11-18 18:56
select (t.user-(select sum(t1.user) from mytable t1 where t1.time='2015/1/3' and t1.area=t.area))/-(select sum(t1.user) from mytable t1 where t1.time='2015/1/3' and t1.area=t.area) from mytable t where t.time='2015/1/4';
注意这边如果time是时间类型需要对条件进行转化比如time=to_date('2015/1/4','yyyy/mm/dd')这样
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯