제8절 ORDER BY 절
1. ORDER BY 정렬
- 특정 컬럼을 기준으로 정렬하여 출력
- 문자, 숫자, 날짜 등 정렬 가능
# ORDER BY 절 기본 구조
SELECT DISTINCT 컬럼1, 컬럼2 # 다섯번째 실행
FROM 테이블명 # 첫번째 실행
WHERE 조건 # 두번째 실행
GROUP BY 컬럼1, 컬럼2 # 세번째 실행
HAVING 조건 # 네번째 실행
ORDER BY 컬럼 #여섯번째 실행
SELECT BillingCountry
, SUM(Total) AS SUM_Country
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-12-31'
GROUP BY BillingCountry
ORDER BY SUM_Country # 기본적으로 오름차순정렬
# 정렬방식
ORDER BY 컬럼 ASC #오름차순 정렬
ORDER BY 컬럼 DESC #내림차순 정렬
# 컬럼의 순서번호를 입력해도 ORDER BY 적용된다.
# ORDER BY 에 적힌 컬럼 순서대로 우선 정렬한다.
# BillingCountry는 오름차순으로 Total은 내림차순으로 정렬
SELECT InvoiceId, CustomerId, BillingCity, BillingCountry, Total
FROM Invoice
ORDER BY 4 ASC, Total DESC
2. Top N 쿼리
# SUM_Country가 높은 국가 상위 5개만 추출
# DBMS마다 행 개수 조건 함수가 다름
# 1) LIMIT
SELECT BillingCountry
, SUM(Total) AS SUM_Country
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-12-31'
GROUP BY BillingCountry
ORDER BY SUM_Country DESC
LIMIT 5 # 행(ROW)개수 조건
# 2) TOP
SELECT TOP 5 # 행(ROW)개수 조건
BillingCountry
, SUM(Total) AS SUM_Country
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-12-31'
GROUP BY BillingCountry
ORDER BY SUM_Country DESC
# 3) ROWNUM
SELECT BillingCountry
, SUM(Total) AS SUM_Country
FROM Invoice
WHERE InvoiceDate BETWEEN '2007-01-01' AND '2007-12-31'
AND ROWNUM <= 5 # 행(ROW)개수 조건
GROUP BY BillingCountry
ORDER BY SUM_Country DESC
'SQL > SQLD (개발자)' 카테고리의 다른 글
2-2. SQL 활용_(1)표준 조인(STANDARD JOIN) (0) | 2021.09.13 |
---|---|
2-1. SQL 기본_(9)조인(JOIN) (0) | 2021.09.01 |
2-1. SQL 기본_(7)GROUP BY, HAVING 절 (0) | 2021.08.29 |
2-1. SQL 기본_(6)함수(FUNCTION) (0) | 2021.08.26 |
2-1. SQL 기본_(5)WHERE 절 (0) | 2021.08.25 |