作者paranoia5201 (社会黑暗、行路难)
看板Statistics
标题[程式] 如何在SQL中执行「後项减前项」?
时间Mon Dec 25 16:12:23 2017
[软体程式类别]:SAS SQL
[程式问题]:就是後项减前项,详细请看下面说明
[软体熟悉度]:
熟悉
[问题叙述]:
A病
年度 发生率 发生人数 人数增减
2011 4.4 1,460 -
2012 4.9 1,640 180
2013 5.6 1,959 319
2014 5.3 1,892 -67
2015 5.4 1,991 99
现有档案已经有历年发生率与发生人数,人数增减为前後两年度的差额,如:
180 = 1640 - 1460
319 = 1659 - 1640
-67 = 1892 - 1959
99 = 1991 - 1892
不知道该如何计算并呈现人数增减栏位,想请指教程式的写法。
[程式范例]:
/* 前项减後项、未成功之写法 */
/* 档案名称为bcc */
proc sql;
select a.*, (a.TotalCase - b.TotalCase)
from bcc a
join bcc b on year(a.TotalCase) = year(b.TotalCase) – 1;
quit;
/* 程式执行之结果 */
year 发生率 发生人数 (人数增减) (数字来源)
2010 4.58 1457 -183 =1457 – 1640
2011 4.43 1460 -180 =1460 – 1640
2012 4.9 1640 -319 =1640 – 1959
2012 4.9 1640 -351 =1640 – 1892
2012 4.9 1640 -252 =1640 – 1991
逻辑似乎正确,但是结果错误……。恳请解答!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.241.78.121
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1514189545.A.05A.html
1F:推 west1996: 一定要用SQL吗?若不需要的话,这个用data step处理最快 12/25 20:51
2F:→ paranoia5201: 我知道用一般sas步骤也可以处理,但是也想学一下SQL 12/25 22:19
3F:→ paranoia5201: 如何处理。 12/25 22:19
4F:推 qwaszx780917: 觉得你的需求可以用 lag函数,sas或sql应该都有 01/02 17:34