作者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/m.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