728x90
01. ORDER BY 절
ORDER BY는 데이터를 오름차순, 내림차순으로 출력 할 수 있는 명령어이다.
ORDER BY (ASC) = 오름차순 (ASC는 생략 가능)
ORDER BY DESC = 내림차순
단, 정렬하기 위해서 시간과 성능이 소요된다.
SELECT * FROM USER
ORDER BY NAME ASC;
-- 이름 오름차순으로 유저 테이블이 정렬된다
SELECT * FROM USER
ORDER BY NAME DESC;
-- 이름 내림차순으로 유저 테이블이 정렬된다
ORDER BY 특징
- 기본적인 정렬 순서는 오름차순(ASC)이다.
- 숫자형 데이터 타입은 오름차순으로 정렬했을 겅우에 가장 작은 값부터 출력된다.
- 날짜형 데이터 타입은 오른차순으로 정렬했을 경우 날짜 값이 가장 빠른 값이 먼저 출력 된다. (예를 들어 '01-JAN-2012'는 '01-SEP-2015' 보다 먼저 출력된다.)
- Oracle에서는 NULL값을 가장 큰 값으로 간주하여 오름차순으로 정렬했을 경우에는 가장 마지막에, 내림차순으로 정렬했을 경우에는 가장 먼저 위치한다.
- SQL Server에서는 NULL 값을 가장 작은 값으로 간주하여 오름차순으로 정렬했을 경우에는 가장 먼저, 내림차순으로 정렬했을 경우에는 가장 마지막에 위치한다.
02. SELECT 실행 순서
① FROM 테이블명
② WHERE 조건식
③ GROUP BY 칼럼
④ HAVING 그룹조건식
⑤ SELECT 칼럼명
⑥ ORDER BY 칼럼
조회할 테이블을 찾는다 (FROM)
→ 조회 할 데이터가 아닌 것들은 제외한다 (WHERE)
→ 조회 할 데이터의 행을 그룹화 시킨다 (GROUP BY)
→ 그룹화의 조건절을 이용하여 조회 할 데이터가 아닌 것들을 제외한다 (HAVING)
→ 데이터를 출력한다 (SELECT)
→ 데이터를 정렬한다 (ORDER BY)
03. TOP
TOP은 상위 N개의 데이터를 출력한다
FRUIT TABLE
ITEM | CNT |
apple | 2 |
apple | 2 |
apple | 1 |
apple | 1 |
banana | 2 |
banana | 1 |
banana | 1 |
SELECT TOP 1
ITEM, CNT
FROM FRUIT
ORDER BY ITEM DESC, CNT DESC;
RESULT
ITEM | CNT |
apple | 2 |
이렇게 TOP 1은 상위 데이터 1개만 출력된다.
04. TOP WITH TIES
TOP과 동일하게 상위 N개의 데이터를 조회한다.
하지만 동일한 데이터가 있을 경우 함께 출력 된다.
TOP WITH TIES를 사용하기 위해서는 ORDER BY절이 반드시 함께 와야 한다. (TOP의 경우 없어도 가능)
동일한 데이터는 ORDER BY절 뒤에 오는 칼럼이 기준이 된다.
FRUIT TABLE
ITEM | CNT |
apple | 2 |
apple | 2 |
apple | 1 |
apple | 1 |
banana | 2 |
banana | 1 |
banana | 1 |
01.
SELECT TOP 1 WITH TIES
ITEM, CNT
FROM FRUIT
ORDER BY ITEM DESC, CNT DESC;
RESULT
ITEM | CNT |
apple | 2 |
apple | 2 |
TOP 1 이기 때문에 상위 1개의 데이터만 출력 되야 하지만
ORDER BY절 뒤에 오는 ITEM, CNT의 값이 동일한 데이터가 함께 출력 되기 때문에 2개의 데이터가 출력된다.
02.
SELECT TOP 1 WITH TIES
ITEM, CNT
FROM FRUIT
ORDER BY ITEM DESC;
ORDER BY절 뒤에 ITEM 컬럼만 적용할 경우
RESULT
ITEM | CNT |
apple | 1 |
apple | 2 |
apple | 2 |
apple | 1 |
TOP 1임에도 불구하고 ITEM의 값이 동일한 결과를 함께 출력하기 때문에 4개의 ROW의 결과가 출력된다.
728x90
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] SQL 활용 - 표준조인 (0) | 2023.08.31 |
---|---|
[SQLD] SQL 기본 - 조인 (0) | 2023.08.31 |
[SQLD] SQL 기본 - GROUP BY, HAVING 절 (0) | 2023.08.31 |
[SQLD] SQL 기본 - FUNCTION (0) | 2023.08.31 |
[SQLD] SQL 기본 - WHERE 절 (0) | 2023.08.30 |