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
Операция чтения в SQL включает в себя написание запросов SQL SELECT для чтения данных из таблиц. В приведенной ниже программе запрашивается набор данных SAS с именем CARS, доступный в библиотеке SASHELP. Запрос выбирает некоторые из столбцов набора данных.
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS ; QUIT;
Когда приведенный выше код выполняется, мы получаем следующий результат —
SQL SELECT с предложением WHERE
Приведенная ниже программа запрашивает набор данных CARS с предложением where . В результате мы получаем только те наблюдения, которые обозначены как «Ауди», а тип — как «Спорт».
PROC SQL; SELECT make,model,type,invoice,horsepower FROM SASHELP.CARS Where make = 'Audi' and Type = 'Sports' ; QUIT;
Когда приведенный выше код выполняется, мы получаем следующий результат —
Операция 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;
Когда приведенный выше код выполняется, мы получаем следующий результат —
Операция SQL DELETE
Операция удаления в SQL включает удаление определенных значений из таблицы с помощью оператора SQL DELETE. Мы продолжаем использовать данные из приведенного выше примера и удаляем строки из таблицы, в которой зарплата сотрудников превышает 900.
PROC SQL; DELETE FROM EMPLOYEES2 WHERE SALARY > 900; QUIT; PROC PRINT data = EMPLOYEES2; RUN;
Когда приведенный выше код выполняется, мы получаем следующий результат —