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       方差  

posted on 2008-08-22 15:53  zgw21cn  阅读(1396)  评论(0编辑  收藏  举报

导航