정렬과 중복 제거
ORDER BY로 결과를 오름차순, 내림차순으로 정렬하는 방법과 NULL의 정렬 위치, 여러 컬럼 정렬, DISTINCT로 중복 행을 없애는 방법
#핵심 요약
ORDER BY 컬럼 ASC는 낮은 값부터(오름차순), DESC는 높은 값부터(내림차순) 출력함
SELECT 절에 없는 컬럼으로도 정렬할 수 있고, 컬럼 순서 번호로도 정렬할 수 있음
NULLS LAST, NULLS FIRST로 NULL이 나오는 위치를 정함
SELECT DISTINCT 컬럼은 중복 행을 없앰
실습에서는 UNIQUE를 써도 된다고 적었음
#개념과 동작 원리
정렬 옵션:
| 옵션 | 뜻 |
|---|---|
ASC |
낮은 값부터 높은 값 순(오름차순) |
DESC |
높은 값부터 낮은 값 순(내림차순) |
NULLS FIRST / NULLS LAST |
NULL을 맨 앞 또는 맨 뒤에 |
정렬 방향 기본값은 ASC이며 NULL은 ASC에서 마지막, DESC에서 처음에 위치함
#주요 용어와 구성 요소
DISTINCT와 UNIQUE는 같은 뜻이며 선택한 모든 식의 값 조합을 기준으로 중복을 제거함
#필수 명령어 또는 SQL
| 항목 | 실행 조건 |
|---|---|
| 작업 대상 | emp의 급여, 입사일, 부서, 커미션 정렬과 직무 중복 제거 |
| 필요 권한 | 대상 테이블 조회 권한이 있는 계정 |
| 바꿀 입력값 | 정렬 열, 방향, NULL 위치, 중복 제거할 열 조합 |
| 결과 해석 | 과제 결과와 현재 테이블의 출력은 기재 없음 |
SELECT ename, sal
FROM emp
ORDER BY sal ASC;
SELECT ename, sal
FROM emp
ORDER BY hiredate ASC;
SELECT ename, deptno, sal
FROM emp
ORDER BY deptno ASC, sal DESC;
SELECT ename, comm
FROM emp
ORDER BY comm DESC NULLS LAST;결과 해석: 세 번째 문장은 부서번호 오름차순으로 먼저 정렬하고, 같은 부서 안에서 월급 내림차순으로 정렬함
네 번째 문장은 커미션이 높은 사원부터 출력하고 NULL은 맨 뒤에 둠
SELECT DISTINCT job
FROM emp;결과 해석:
실습에서는 공공데이터 테이블에서 시군구명, 법정동명을 중복 없이 출력하고 정렬하는 문제를 냈음
답은 기재 없음
#구문과 옵션 설명
DISTINCT 조회의 ORDER BY에는 SELECT 목록에 없는 열을 사용할 수 없음
여러 정렬 열은 앞선 열의 값이 같은 행에 다음 정렬 기준을 적용함
#사용 조건과 주의사항
위에서 몇 건만 자르는 FETCH FIRST와 ROWNUM은 조회 행 수 제한에 있음
실습에서는 정렬 문제로 CSV 데이터를 테이블로 적재하는 과제를 냈음
조회 결과의 순서를 정하려면 ORDER BY가 필요함
DISTINCT는 중복 제거 기능임