SAS的SQL过程(SQL Procedure in SAS)(二)
1.普通查询
查询语句如下:
SELECT column<, column>…
FROM table/view <, table/view>….
<WHERE expression>
<GROUP BY column <, column>…>
<HAVING expression>
<ORDER BY column<, column>…>
例如
Proc sql;
Validate
Select EmployeeNumber, JobCode, Salary
From airline.payrol_master
Where JobCode contains “NA”
Order by Salary desc;
其中关键词Validate仅用于select查询,以不执行查询的方式来检查语法是否有错,检查列名是否有效,以及有错的情况下输出错误信息。
再例如
proc sql noexec;
select EmployeeNumber, JobCode, Salary
from airline.payroll_master
where JobCode contains “NA”
order by Salary desc;
关键词noexec的作用也在于检查语法。
除于select语句外,SAS还支持其它语句如下
PROC SQL <option <option>…>
ALTER expression;
CREATE expression;
Delete expression;
DESCRIBE expression;
DROP expression;
UPDATE expression;
RESET expression;
INSERT expression;
此外,Distinct 在SAS中也得到了支持。
2. where条件表达式
当使用where 进行条件查找时,逻辑关系中的不等表示为^= .
操作符IN可以将一个值与系列值进行比较。如果这个值能匹配其中最少一个值,表达式将返回ture,不然将返回false。
例如: where JobCategory in (“PT”,”NA”,”FA”)
逻辑操作符有
OR |
AND &
NOT ^
与缺失值进行比较时,可以使用 IS NULL 或IS MISSING。如
where FlightNumber is missing
当然,你也可以使用如下形式:
where FlightNumber=’ ’
where FlightNumber=.
若要查询包含在某个区间的值时,可以使用BETWEEN –AND. 如
where date between ’ 01mar2000’d and ’ 07mar2000’d
另外,可以使用通配符查询。如%可以取代任意个字符,where LastName like ’ H%’。 ’ —’
取代一个字符,where JobCode like ’ _1’。而通配符=*可以包含拼写变化的单词。
如 where LastName=*’ SMITH’,此外查询将返回SMITH外,还将返回SMITT, SMYTHE,以及SMOTHE。
3.聚合函数如下
AVG,MEAN 平均值
COUNT,FREQ ,N 非缺失值的个数
MAX 最大值
MIN 最小值
NMISS 缺失值的个数
STD 标准差
SUM 值的和
VAR 方差