Учебники

SAS — SQL

SAS предлагает обширную поддержку большинству популярных реляционных баз данных, используя SQL-запросы внутри программ SAS. Большая часть синтаксиса ANSI SQL поддерживается. Процедура PROC SQL используется для обработки операторов SQL. Эта процедура может не только вернуть результат запроса SQL, но и создать таблицы и переменные SAS. Пример всех этих сценариев описан ниже.

Синтаксис

Основной синтаксис для использования PROC SQL в SAS —

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

Ниже приведено описание используемых параметров:

  • SQL-запрос записывается под оператором PROC SQL, за которым следует оператор QUIT.

SQL-запрос записывается под оператором PROC SQL, за которым следует оператор QUIT.

Ниже мы увидим, как эту процедуру SAS можно использовать для операций CRUD (создание, чтение, обновление и удаление) в SQL.

Операция создания 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_create_table

Операция чтения SQL

Операция чтения в SQL включает в себя написание запросов SQL SELECT для чтения данных из таблиц. В приведенной ниже программе запрашивается набор данных SAS с именем CARS, доступный в библиотеке SASHELP. Запрос выбирает некоторые из столбцов набора данных.

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

Когда приведенный выше код выполняется, мы получаем следующий результат —

SQL1

SQL SELECT с предложением WHERE

Приведенная ниже программа запрашивает набор данных CARS с предложением where . В результате мы получаем только те наблюдения, которые обозначены как «Ауди», а тип — как «Спорт».

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

Когда приведенный выше код выполняется, мы получаем следующий результат —

SQL_where_clause

Операция SQL UPDATE

Мы можем обновить таблицу SAS с помощью оператора SQL Update. Ниже мы сначала создаем новую таблицу с именем 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;

Когда приведенный выше код выполняется, мы получаем следующий результат —

proc_sql_update.JPG

Операция SQL DELETE

Операция удаления в SQL включает удаление определенных значений из таблицы с помощью оператора SQL DELETE. Мы продолжаем использовать данные из приведенного выше примера и удаляем строки из таблицы, в которой зарплата сотрудников превышает 900.

PROC SQL;
DELETE FROM EMPLOYEES2
      WHERE SALARY > 900;
QUIT;
      PROC PRINT data = EMPLOYEES2;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий результат —