- SAS教程
- SAS - 主页
- SAS - 概述
- SAS - 环境
- SAS - 用户界面
- SAS - 程序结构
- SAS - 基本语法
- SAS - 数据集
- SAS - 变量
- SAS - 字符串
- SAS - 阵列
- SAS - 数字格式
- SAS - 运营商
- SAS - 循环
- SAS - 决策
- SAS - 函数
- SAS - 输入方法
- SAS - 宏
- SAS - 日期和时间
- SAS 数据集操作
- SAS - 读取原始数据
- SAS - 写入数据集
- SAS - 连接数据集
- SAS - 合并数据集
- SAS - 数据集子集化
- SAS - 排序数据集
- SAS - 格式化数据集
- SAS-SQL
- SAS - 输出传输系统
- SAS - 模拟
- SAS 基本统计程序
- SAS-算术平均值
- SAS-标准差
- SAS - 频率分布
- SAS - 交叉表
- SAS - T 测试
- SAS - 相关性分析
- SAS - 线性回归
- SAS - 布兰德-奥特曼分析
- SAS-卡方
- SAS - 费舍尔精确测试
- SAS - 重复测量分析
- SAS-单向方差分析
- SAS-假设检验
- SAS 有用资源
- SAS - 快速指南
- SAS - 有用的资源
- SAS - 问题与解答
- SAS - 讨论
SAS-SQL
SAS 通过在 SAS 程序中使用 SQL 查询,为大多数流行的关系数据库提供广泛的支持。支持大多数ANSI SQL语法。过程PROC SQL用于处理SQL 语句。该过程不仅可以返回 SQL 查询的结果,还可以创建 SAS 表和变量。下面描述了所有这些场景的示例。
句法
在 SAS 中使用 PROC SQL 的基本语法是 -
PROC SQL; SELECT Columns FROM TABLE WHERE Columns GROUP BY Columns ; QUIT;
以下是所使用参数的描述 -
SQL 查询写在 PROC SQL 语句下面,后面跟着 QUIT 语句。
下面我们将看到这个 SAS 过程如何用于SQL 中的CRUD(创建、读取、更新和删除)操作。
SQL创建操作
使用 SQL,我们可以从原始数据创建新的数据集。在下面的示例中,首先我们声明一个名为 TEMP 的数据集,其中包含原始数据。然后我们编写一个 SQL 查询来根据该数据集的变量创建一个表。
DATA TEMP; INPUT ID $ NAME $ SALARY DEPARTMENT $; DATALINES; 1 Rick 623.3 IT 2 Dan 515.2 Operations 3 Michelle 611 IT 4 Ryan 729 HR 5 Gary 843.25 Finance 6 Nina 578 IT 7 Simon 632.8 Operations 8 Guru 722.5 Finance ; RUN; PROC SQL; CREATE TABLE EMPLOYEES AS SELECT * FROM TEMP; QUIT; PROC PRINT data = EMPLOYEES; RUN;
当执行上面的代码时,我们得到以下结果 -
SQL读操作
SQL 中的读取操作涉及编写 SQL SELECT 查询以从表中读取数据。在下面的程序中,查询 SASHELP 库中可用的名为 CARS 的 SAS 数据集。该查询获取数据集的一些列。
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS ; QUIT;
当执行上面的代码时,我们得到以下结果 -
带有 WHERE 子句的 SQL SELECT
以下程序使用where子句查询 CARS 数据集。在结果中,我们仅得到品牌为“奥迪”、类型为“运动”的观察结果。
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS Where make = 'Audi' and Type = 'Sports' ; QUIT;
当执行上面的代码时,我们得到以下结果 -
SQL更新操作
我们可以使用 SQL Update 语句更新 SAS 表。下面我们首先创建一个名为 EMPLOYEES2 的新表,然后使用 SQL UPDATE 语句更新它。
DATA TEMP; INPUT ID $ NAME $ SALARY DEPARTMENT $; DATALINES; 1 Rick 623.3 IT 2 Dan 515.2 Operations 3 Michelle 611 IT 4 Ryan 729 HR 5 Gary 843.25 Finance 6 Nina 578 IT 7 Simon 632.8 Operations 8 Guru 722.5 Finance ; RUN; PROC SQL; CREATE TABLE EMPLOYEES2 AS SELECT ID as EMPID, Name as EMPNAME , SALARY as SALARY, DEPARTMENT as DEPT, SALARY*0.23 as COMMISION FROM TEMP; QUIT; PROC SQL; UPDATE EMPLOYEES2 SET SALARY = SALARY*1.25; QUIT; PROC PRINT data = EMPLOYEES2; RUN;
当执行上面的代码时,我们得到以下结果 -
SQL 删除操作
SQL 中的删除操作涉及使用 SQL DELETE 语句从表中删除某些值。我们继续使用上面示例中的数据,并从表中删除员工工资大于 900 的行。
PROC SQL; DELETE FROM EMPLOYEES2 WHERE SALARY > 900; QUIT; PROC PRINT data = EMPLOYEES2; RUN;
当执行上面的代码时,我们得到以下结果 -