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 칼럼을 오름차순으로 정렬해줍니다.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!