📜  SAS-SQL

📅  最后修改于: 2021-01-08 14:19:00             🧑  作者: Mango

SAS-SQL

SAS通过使用SAS程序中的SQL查询,在大多数流行的关系数据库中提供全面的支持。它支持大多数ANSI SQL语法。我们可以使用过程PROC SQL处理SQL查询。此过程不仅返回SQL查询的结果,还可以创建SAS表和变量。

所有与SQL相关的方案如下所示。

句法:

PROC SQL;
SELECT Columns
FROM TABLE
WHERE Columns
GROUP BY Columns
;
QUIT;

哪里,

  • PROC SQL:这是编写SQL查询的过程。
  • 退出:这是用于关闭SQL查询的语句。

以下是SQL操作,我们将在其中学习如何对SQL中的CRUD(CREATE,READ,UPDATE和DELETE)操作使用PROC SQL过程。

创建操作

我们可以使用SQL从原始数据创建一个新的数据集。让我们考虑SAS数据集DETAILS ,其中包含组织员工的个人信息。现在,我们需要编写SQL查询,以根据变量的原始数据创建表EMPLOYEE。

DATA details;
INPUT empid name $ salary dept $ ; 
DATALINES; 
1 Akash 22000 IT
6 Jaya 23500 HR  
2 Vinita 33000 IT  
7 Kumar 27000 IT 
4 Anita 53000 HR  
5 Taufik 32000 IT  
8 Boby 25000 IT   
3 Ankita 42000 IT 
;
RUN;
PROC SQL;
CREATE TABLE EMPLOYEES AS
SELECT * FROM details;
QUIT;

PROC PRINT data = EMPLOYEES;
RUN;

在SAS Studio中执行以上代码:

输出:

正如我们在输出中看到的,已经为所有变量创建了表。

SQL读取操作

SQL的Read Operation中,我们可以从表中读取数据。要读取数据,我们需要编写一个SQL SELECT查询在示例中,我们将从SASHELP库中已经可用的表CARS中读取数据。 SELECT查询获取数据集中提到的列(或变量)的数据。

例:

PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM 
SASHELP.CARS
;
QUIT;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,表CARS的所有数据已显示。

带WHERE子句的SQL SELECT查询

SAS在数据的子设置中使用“ where”子句,即,仅用于获取我们需要的值并放弃其余值。

以下程序具有一个带有子句的CARS数据集,其中。在结果中,我们将仅获得make列值为“ Audi”的观察值和type列值为“ Sports”的观察值。

PROC SQL;
SELECT make,model,type,invoice,horsepower
FROM 
SASHELP.CARS
Where make = 'Audi'
and Type = 'Sports'
;
QUIT;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,已显示Make = Audi和Type = Sports列的所有观测值,其余的观测值已被省略。

SQL UPDATE操作

SQL的Update Operation中,我们可以更新表的数据。要更新数据,我们需要编写SQL UPDATE query 。在下面的示例中,我们将更新数据集DETAILS的数据。

DATA DETAILS;
INPUT empid name $ salary dept $ ; 

DATALINES; 
1 Akash 22000 IT
6 Jaya 23500 HR  
2 Vinita 33000 IT  
7 Kumar 27000 IT 
4 Anita 53000 HR  
5 Taufik 32000 IT  
8 Boby 25000 IT   
3 Ankita 42000 IT 
;
RUN;

PROC SQL;
CREATE TABLE EMPLOYEES2 AS
SELECT empid as id,
name as empname ,
salary as salary,
dept as department
FROM DETAILS;
QUIT;
PROC SQL;
UPDATE EMPLOYEES2
      SET SALARY = SALARY*1.25;
   QUIT;
      PROC PRINT data = EMPLOYEES2;
RUN;

在SAS Studio中执行以上代码:

输出:

如您在输出中看到的,所有变量都已更新,例如empididnameempnamedeptdepartment

SQL删除操作

SQL的Delete操作中,我们可以从表中删除特定数据。要从表中删除数据,我们需要编写SQL DELETE query 。在下面的示例中,我们将从表中删除数据。

在这里,我们从上面的示例中获取数据,并将删除表中雇员薪水超过30,000的行。

DATA DETAILS;
INPUT empid name $ salary dept $ ; 

DATALINES; 
1 Akash 22000 IT
6 Jaya 23500 HR  
2 Vinita 33000 IT  
7 Kumar 27000 IT 
4 Anita 53000 HR  
5 Taufik 32000 IT  
8 Boby 25000 IT   
3 Ankita 42000 IT 
;
RUN;
PROC SQL;
DELETE FROM DETAILS
      WHERE SALARY > 30000;
QUIT;
      PROC PRINT data = DETAILS;
RUN;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,所有薪水超过30,000的员工都被删除。