procsqlsas
❶ SAS資料庫中查詢刪除的語句要如何寫
使用proc sql;delete from....where...語句,提醒你注意做好備份,防止出錯。
proc sql;
delete from a
where 條件語句;
quit;
❷ SAS應用:都是小數點惹的禍
SAS應用:都是小數點惹的禍
今天有人用了兩種方法通過分組求平均數問題,發現結果不一樣。為了說明問題,我自己簡單地造了些數據,如下:
data p;
input id date field value ;
cards;
1 2 0.0001 10
1 2 0.0001 10
1 2 0.00001 10
1 2 0.00001000001 10
1 3 0.00001 10
1 3 0.00001 10
1 3 0.00003 10
1 3 0.00003 10
1 3 0.00003 10
;
run;
proc sql;
create table NoDup1 as
select unique id, date, field, avg(value) as value from Dup group by id, date, field;
quit; ;
*method 2;
proc means data = Dup nway ;
class id date field;
var value;
output out = NoDup2(drop = _type_ _freq_) mean = value;
run;
初一看來,好像代碼沒什麼問題,應該結果一致,然而結果運行後,用sql得到的結果與proc步不一樣,這是為什麼? 似乎這是SAS的錯誤,哈哈這個多麼偉大的一個發現啊! SAS可以說是總多行業裡面的標准,竟然也會錯。 其實這不是第一次發現這類問題。 以前也遇到過同樣的一個問題,就是:
data ex;
do i= 0.05 to 0.15 by 0.01;
if i=0.1 then output;
end;
run;
這個代碼運行後,ex數據集是空的,是不是SAS出錯了。後來發現這是由於計算機存儲小數的浮點問題,循環5次後,i應該等於0.1,實際上非常接近0.1,是個近似值,並不是等於0.1,因此並無數據輸出到ex裡面。
那麼回到上面的那個問題,根本原因是proc sql和proc mean步對數的小數點處理不同,proc mean考慮到小數點多於sql, 因此會導致nop1比nop2少一條觀察。下面我提供第三種解決此類問題的代碼,data步,也是商業大型數據的常用方法:
data nop3;
set p;
by id date field;
if first.field then do; num=0;mean=0;end;
num+1; mean+value;
if last.field then do; value=mean/num; drop num mean; output; end;
run;
這個也是和proc mean步結果是一樣的。
有時候也許不需要考慮沒必要的小數位,可以用函數round,int,ceil等,還有一種方法就是把需要分組和比較大小的非整數用format格式化一下。
一般來說,我如果發現SAS運行結果和我想的不一樣,可以歸結於兩點:1,自己的代碼有問題;2,小數點問題。
❸ sas怎麼用proc sql創建新表
CREATE PROC[EDURE] 過程名
[@參數1 類型][=默認值][ OUTPUT],
[@參數N 類型][=默認值][ OUTPUT]
AS
SQL 語句
GO
帶中括弧的都是可以簡寫或不寫的。。。
❹ sas訪問資料庫時,是用proc sql 還是用data快
來源:http://blog.sina.com.cn/s/blog_5d3b177c0100c6tv.html?retcode=0
DATA Step與PROC SQL的對比
DATA Step vs. PROC SQL: What』s a neophyte to do? -
原文地址:http://www2.sas.com/proceedings/forum2007/237-2007.pdf
轉載請註明出處:http://blog.sina.com.cn/s/blog_5d3b177c0100c6tv.html
這篇文章比較簡單,因此只是把一些SAS和SQL相似的功能列舉出來,供以後查閱。
❺ sas proc sql 中case when 里else null報錯
null是Java中的關鍵字。
就像每種原始類型都有默認值一樣,如int默認值為0,boolean的默認值為false,null是任何引用類型的默認值,不嚴格的說是所有object類型的默認值。
❻ 如何用sas proc sql 查詢database表類
如何用sas proc sql 查詢database表類
CREATE PROC[EDURE] 過程名
[@參數1 類型][=默認值][ OUTPUT],
[@參數N 類型][=默認值][ OUTPUT]
AS
SQL 語句
GO
帶中括弧的都是可以簡寫或不寫的。。
❼ 求助:能否在SAS循環語句中嵌入SQL語句
使用proc sql;delete from....where...語句,提醒你注意做好備份,防止出錯。 proc sql; delete from a where 條件語句; quit;
❽ 關於SAS中proc sql過程步的問題
SQL的話參考下
select b.bb.no,a.aa.name,b.bb.age
from a.aa left join b.bb
1)
on a.aa=replace(b.bb.no,'-') --這個是去掉b.bb里的-的
或者也可以用
2)
on substr(a.aa.no,1,1)||'-'||substr(a.aa.no,2,1)=b.bb.no --這個是按你的要求,加-的
❾ 請問sas中proc sql語句是什麼意思
「通常來說,sql進行的過程跟data步是相反的,即sql是按列執行,data步是按行執行; 但是在你的程序中,用到了mean函數,這是一個summary function,在這些summary function中,如果只有一個變數,就會被認為是sql函數,就會按列計算,比如你的第二個...」
❿ 各位大師幫忙解決,在SAS軟體用PROC SQL語言進行AB表合並操作
proc sql;
create tablec as
select a.applyid,a.intotime,b.*
from a left join b
on a.applyid=b.applyid;
quit;