語法: create table OUT_NAME as
select 以下定義要輸出的欄位,以 ","分開, 可用as 改新的名字; wildcard * 也可以用.是指全部的欄位.
from data_sets 指出資料從那來, 可以多個檔, 可以用 as 定義別名. 較容易寫及了解
where : 給條件, 用在單檔或多檔上. 條件成立會放到table 中.
on : 給條件, 用在join 上
group by : 對input 分群, 以 "," 分開多變數
order by : 對output sort 排序, 以 "," 分開多變數
完整命令只有一個 ";" 不需要下run; 看到 ";" 就會執行.

 

/* 數個統計用法,
SUM: 做加總
count: 共有幾個  */
Proc SQL;
create table xxx as
select *, sum(varA) as sumA, count(varA) as cntA
from dbx;

/* 取出唯一的值, 一個值只會出現一次(指列在 select 後的所有變數), varA varB 組合出的值, 如有相同只會留下一筆. */
Proc SQL;
create table xxx as
select distinct varA, varB
from dbx;

//相似SAS 中的merge 功能
/* 關連性資料庫, 如 dbx 有3 筆, db2 有四筆, from dbx, db2 --> 總共會有3x4 筆
12筆中 dbx.id=db2.id 會留下來, 已定義別名a,b,
所以上面的條件式也可改寫為 a.id=b.id. */
Proc SQL
;
create table xxx as
select a.*, b.*
from dbx as a, db2 as b
where a.id=b.id2;

//相似SAS 中的merge 功能
/* a left join b,
在條件成立下會留下來, 但如果a.id 無法找到對應的值 a.也會留下來, 但b.* 只會填上missing value
如果想留下a.的每個row,不管merge 是否成功 */
Proc
SQL;
create table xxx as
select a.*, b.*
from dbx a left join  db2b
on a.id=b.id2;

...
from...
group by varA, varB //group for , sum,average, cnt,.... 
order by  varA, varB;    // sort

條件式的用法:

Proc SQL;
create table xxx as
select *, case when price>10 then 1
               when price <20 then 2
               else -1 end as Xprice
from dbx ;
* 最後用 AS 給了這個變數名稱, then 的後面是給在這個條件 output 值或算式.

------
monotonic() as num; // 流水號. 第一筆為1. 第二筆為2....

Proc SQL;
create table xxx as
select a.*, monotonic() as num
from dbx as ;

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cianfen 的頭像
    cianfen

    cianfen的部落格

    cianfen 發表在 痞客邦 留言(0) 人氣()