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를 기준으로 내림차순으로 정렬합니다.
위의 데이터는 가상의 데이터로 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'
결과
예시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함수로 여러 문자열을 하나로 합쳐주는 역할을 합니다. 파라미터를 두 개 이상 사용할 수 있어서 문장을 만들어 출력을 할 수도 있습니다.
PROC SQL;
select CAT('There are a total of ' , count(*), ' ',lower(occupation),'s.')
from occupations
group by occupation
ORDER BY occupation;
QUIT;
쿼리순서: FROM > GROUP BY > SELECT > ORDER BY
FROM occupations: occupations 테이블에서 데이터를 가져옵니다.
GROUP BY occupation: occupations 테이블에서 같은 occupation이 같은 데이터를 합쳐줍니다.
SELECT: occupation 에 따라 합쳐진 데이터가 몇개인지 카운팅합니다.
ORDER BY: occupation 칼럼을 오름차순으로 정렬해줍니다.
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.