| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1126 人关注过本帖
标题:计算增长率的问题
只看楼主 加入收藏
shjt
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
计算增长率的问题
公司报表要求计算增长率,请教高手编写SQL语句

表tt

日期         经济指标     增长率   
2010-1-1     1000         0
2010-1-15    2000         *         要求计算数值:(2000-1000)/1000
2010-1-30    3000         *         要求计算数值:(3000-2000)/2000
2010-2-28    5000         *         要求计算数值:(5000-3000)/3000
2010-3-31    5000         *         要求计算数值:(5000-5000)/5000
2010-4-15    4000         *        
........

说明:计算“增长率”的公式为:(下行数值 -上行数值)/上行数值
搜索更多相关主题的帖子: 增长率 经济指标 
2011-03-05 20:29
shjt
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-5
收藏
得分:0 
怎么无人知道呀!!!!真是——————寂寞高手一时惧无踪!!!
2011-03-06 20:58
terryllb
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2011-3-6
收藏
得分:10 
update tt t set 增长率=(经济指标 in (select 经济指标 from tt having count(经济指标)=count(t.经济指标)+1 order by 经济指标)-t.经济指标)/1000
2011-03-06 23:13
shjt
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-5
收藏
得分:0 
感谢高手出来解答,可是出错了。

create table tt (日期 smalldatetime, 经济指标 int, 增长率 decimal null )
insert into tt values ('2010-1-1',1000,0)
insert into tt values ('2010-1-15', 2000, null)
insert into tt values ('2010-1-30', 3000, null)
insert into tt values ('2010-2-28', 5000, null)
insert into tt values ('2010-3-31', 5000, null)
insert into tt values ('2010-4-15', 4000, null)
go
select * from tt
go

update tt t set 增长率=(经济指标 in (select 经济指标 from tt having count(经济指标)=count(t.经济指标)+1 order by 经济指标)-t.经济指标)/1000

运行结果:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 't' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'order' 附近有语法错误。
2011-03-07 20:31
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
收藏
得分:0 
回复 楼主 shjt
请人帮忙态度要端正啊.
2011-03-11 00:53
autobot
Rank: 4
等 级:业余侠客
帖 子:71
专家分:202
注 册:2007-9-6
收藏
得分:0 
--建表加入数据
create table tt (日期 smalldatetime, 经济指标 int, 增长率 decimal null )
insert into tt values ('2010-1-1',1000,0)
insert into tt values ('2010-1-15', 2000, null)
insert into tt values ('2010-1-30', 3000, null)
insert into tt values ('2010-2-28', 5000, null)
insert into tt values ('2010-3-31', 5000, null)
insert into tt values ('2010-4-15', 4000, null)

--直接执行这个脚本就可以,他会直接显示出每期的增长率,负值为负增长
SELECT  t2.日期,t2.经济指标,CAST( (t2.经济指标 - t1.经济指标) AS DECIMAL(6,2))/t1.经济指标 AS 增长率
FROM (SELECT tt.日期,tt.经济指标,ROW_NUMBER() OVER(ORDER BY tt.日期)+1 AS num  FROM tt) AS t1
,(SELECT tt.日期,tt.经济指标,ROW_NUMBER() OVER(ORDER BY tt.日期) AS num FROM tt) AS t2
WHERE t1.num = t2.num
2011-03-23 16:16
快速回复:计算增长率的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016869 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved