BookmarkSubscribeRSS Feed

PROC SQL- Order by

Started ‎03-20-2024 by
Modified ‎03-20-2024 by
Views 569

 

Order by

 

SELECT 문의 맨 마지막에 위치하며 데이터를 내림차순 또는 오름차순 정렬할 때 사용.

기본 Syntax는 다음과 같습니다.

 

SELECT * FROM table_name
ORDER BY column_name (ASC, DESC);

 

 

다중정렬을 할 때도, Order by를 사용할 수 있습니다.

 

SELECT * FROM table_name
ORDER By col1 DESC col2 DESC;

 

위의 Syntax는 col1을 기준으로 내림차순으로 정렬하고, col1이 같은 값에 한해서 col2를 기준으로 내림차순으로 정렬합니다.

 

 

 

image.png

 

 

위의 데이터는 가상의 데이터로 10명의 이름(Name) 직업(Occupation)으로 구성되어 있습니다.

 

[SAS Code]

예시1

 

FILENAME REFFILE '/home/u45061472/occupations.xlsx';

PROC IMPORT DATAFILE=REFFILE
	DBMS=XLSX
	OUT=WORK.OCCUPATIONS;
	GETNAMES=YES;
RUN;

PROC CONTENTS DATA=WORK.OCCUPATION ; RUN;

PROC SQL;
SELECT CATS(NAME, '(', SUBSTR(OCCUPATION,1,1), ')') FROM WORK.OCCUPATIONS
ORDER BY NAME;

 

1. PROC IMPORT: 외부 데이터를 불러오기 위한 procedure로 DBMS에 파일 형식, OUT에 sas 내부에 있는 work라이브러리의 occupation 로 데이터를 옮기고, getnames는 첫번째 행을 변수명으로 불러오라는 명령문입니다.

2. ORDER BY: name 변수를 정렬합니다.

3. SUBSTR이란 start 부터 Length 만큼 부분 문자열을 추출

   

    SUBSTR('STAR', 2, 2) => 'TA'

    SUBSTR('START',1) => 'TART'

 

 

image (1).png

 결과

 

 

 

예시2

 

데이터에 직업군의 갯수를 구하고, 직업군의 앞글자를 내림차순으로 정렬합니다.

 

PROC SQL;
  select CATS('There are a total of  ' , count(*), lower(occupation) ,'s.')
  from occupations
  group by occupation
  ORDER BY occupation; 
QUIT;

1. CATS: SQL의 CONCAT함수로 여러 문자열을 하나로 합쳐주는 역할을 합니다. 파라미터를 두 개 이상 사용할 수 있어서 문장을 만들어 출력을 할 수도 있습니다.

 

image (2).png

 

 

PROC SQL;
  select CAT('There are a total of  ' , count(*), ' ',lower(occupation),'s.')
  from occupations
  group by occupation
  ORDER BY occupation; 
QUIT;

 

 

image.png

 

 

쿼리순서: FROM > GROUP BY > SELECT > ORDER BY

  1. FROM occupations: occupations 테이블에서 데이터를 가져옵니다.

  2. GROUP BY occupation: occupations 테이블에서 같은 occupation이 같은 데이터를 합쳐줍니다.

  3. SELECT: occupation 에 따라 합쳐진 데이터가 몇개인지 카운팅합니다.

  4. ORDER BY: occupation 칼럼을 오름차순으로 정렬해줍니다.

  5. CAT과 CATS 차이점: CAT 문자열을 그대로 이어붙이고, CATS는 문자열 끝에 있는 빈 칸을 제거한 후 이어붙입니다.

 

 

Version history
Last update:
‎03-20-2024 06:04 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags