Statistics & Data Science/SAS

[SAS / SQL] 데이터 출력 조건 지정 : 정렬(SORT)

Ariella 2022. 11. 17. 15:25
반응형

 

 

 

cf) 사용 데이터셋 : company

LIBNAME ss "C:\DATA22" ; /*라이브러리 지정*/

 

 


 

 

1. BASE PROC 용법

 

1-1. 오름차순 정렬

 

✔️ formula

PROC SORT DATA=데이터셋 명 OUT=새 데이터셋 명 ;
    BY 정렬할 때 기준 변수 ;
RUN ;​

 

✔️ example

📌 code
PROC SORT DATA=ss.company OUT=scomp ;
    BY type ;
RUN ;

PROC PRINT ; RUN ; /*결과 출력하기*/


📌 result

 


 

1-2. 내림차순 정렬

 

✔️ formula

PROC SORT DATA=데이터셋 명 OUT=새 데이터셋 명 ;
    BY DESCENDING 정렬할 때 기준 변수 ;
RUN ;​

 

✔️ example

 

📌 code
PROC SORT DATA=ss.company OUT=scomp ;
    BY DESCENDING type age;
RUN ;

PROC PRINT ; RUN ; /*결과 출력하기*/​​

type 기준 내림차순 정렬 후 age 기준 내림차순 정렬

📌 result





 

 

2. SQL 용법

 

2-1. 오름차순 정렬

 

✔️ formula

PROC SQL ; /*SQL 엔진 구동*/

    SELECT *
    FROM 데이터셋 명
    ORDER BY 정렬할 기준 변수 ;

QUIT; /*SQL 엔진 종료*/​

 

✔️ example

📌 code
PROC SQL ; /*SQL 엔진 구동*/

    SELECT *
    FROM ss.company
    ORDER BY type ;
    
QUIT; /*SQL 엔진 종료*/​

📌 result

 

 


 

 

2-2. 내림차순 정렬

 

✔️ formula

PROC SQL ; /*SQL 엔진 구동*/

    SELECT *
    FROM 데이터셋 명
    ORDER BY 정렬할 기준 변수 DESC ;

QUIT; /*SQL 엔진 종료*/​

 

✔️ example

📌 code
PROC SQL ; /*SQL 엔진 구동*/

    SELECT *
    FROM ss.company
    ORDER BY type DESC, age;
    
QUIT; /*SQL 엔진 종료*/​​

type 기준 내림차순 정렬 후 age 기준 오름차순 정렬

📌 result 

 

 

 


 

 

실습 문제

 

#️⃣ 1. 연령대가 낮은 관측치부터 순서대로 출력하시오.

📌 code
- BASE PROC
PROC SORT DATA=ss.company OUT=acompany ;
    BY age ;
RUN ;
PROC PRINT ; RUN ; /*결과 출력하기*/​

- SQL
PROC SQL ;
    SELECT *
	FROM ss.company
	ORDER BY age ;
QUIT;​


📌 result
- BASE PROC

- SQL

 

 

 

#️⃣ 2. 성별 * 연령별 순서대로 출력하시오. (단, 연령대는 내림차순으로 정렬하시오.)

📌 code
- BASE PROC
PROC SORT DATA=ss.company OUT=dcompany ;
    BY type DESCENDING age ;
RUN ;
PROC PRINT ; RUN ; /*결과 출력하기*/​

- SQL
PROC SQL ;
    SELECT *
	FROM ss.company
	ORDER BY type, age DESC ;
QUIT;​


📌 result
- BASE PROC

- SQL

 

#️⃣ 3. 이름(name)에 K 또는 k가 포함된 레코드만 출력하는 SQL 프로그램을 작성하시오.

아래의 데이터셋 생성 코드를 실행하시오.
DATA customer ;
    INPUT id $ 1-3 name $ 5-10 type $ 13-17 
          weight 18-19 height 21-23; 
CARDS;
101 KimCS   M1   74 170
102 LeeYH   F1   68 166
103 AhnSJ   F2   55 155
104 ParkMH  M12  72 167
105         MZR  66 169
106 KangJY  F3   52   .
; RUN;​

📌 code
/*sol 1*/
PROC PRINT DATA=customer;
     WHERE FIND(name,"k","i",1) > 0 ;
RUN;

/*sol 2*/
PROC PRINT DATA=customer;
     WHERE INDEX(LOWCASE(name),"k") > 0 ;
RUN;

/*sol 3*/
PROC PRINT DATA=customer;
     WHERE LOWCASE(name) LIKE '%k%' ;
RUN;​

 

📌 result

 

반응형