코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Order By

SQL ORDER BY: 데이터 정렬

SQL ORDER BY 절은 조회된 결과를 특정 열을 기준으로 정렬할 때 사용됩니다. 기본적으로 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있으며, 한 개 이상의 열을 기준으로 정렬이 가능합니다. 데이터를 조회할 때 결과를 정렬하여 더 가독성 높은 결과를 제공할 수 있습니다.

1. 기본 ORDER BY 문법

ORDER BY 절은 다음과 같은 구조로 사용됩니다:

SELECT 열이름1, 열이름2, ...
FROM 테이블이름
ORDER BY 열이름1 [ASC|DESC], 열이름2 [ASC|DESC], ...;

  • 열이름: 정렬할 열을 지정합니다.
  • ASC: 오름차순(기본값). 값이 작은 것부터 큰 순서대로 정렬.
  • DESC: 내림차순. 값이 큰 것부터 작은 순서대로 정렬.

2. 예제: 오름차순과 내림차순 정렬

2.1 오름차순 정렬

기본값으로 오름차순 정렬이 적용됩니다. 다음은 employees 테이블에서 급여를 기준으로 오름차순 정렬하는 예제입니다.

SELECT name, salary
FROM employees
ORDER BY salary;

결과는 급여가 낮은 순서대로 정렬됩니다.

2.2 내림차순 정렬

내림차순으로 정렬하려면 DESC 키워드를 사용합니다.

SELECT name, salary
FROM employees
ORDER BY salary DESC;

이 쿼리는 급여가 높은 순서대로 정렬된 결과를 반환합니다.

3. 여러 열 기준으로 정렬

ORDER BY 절에서는 여러 열을 기준으로 정렬할 수 있습니다. 첫 번째 열을 기준으로 정렬한 후, 값이 동일한 경우 두 번째 열을 기준으로 정렬합니다.

예제:

SELECT name, department, salary
FROM employees
ORDER BY department ASC, salary DESC;

이 쿼리는 부서를 오름차순으로 정렬하고, 부서 내에서 급여는 내림차순으로 정렬합니다.

4. 숫자, 날짜, 문자열 정렬

ORDER BY 절은 문자열, 숫자, 날짜 등 다양한 데이터 타입을 기준으로 정렬할 수 있습니다.

4.1 숫자 정렬

숫자형 데이터를 정렬할 때는 숫자 값에 따라 오름차순 또는 내림차순으로 정렬됩니다.

SELECT name, salary
FROM employees
ORDER BY salary ASC;

이 쿼리는 급여를 기준으로 숫자 순서대로 정렬합니다.

4.2 문자열 정렬

문자열 데이터는 알파벳 순서대로 정렬됩니다. SQL은 대소문자를 구분하지 않으며, 기본적으로 사전 순으로 정렬합니다.

SELECT name, department
FROM employees
ORDER BY name ASC;

이 쿼리는 이름을 알파벳 순서대로 정렬합니다.

4.3 날짜 정렬

날짜형 데이터를 정렬할 때는 날짜 순서에 따라 정렬됩니다.

SELECT name, hire_date
FROM employees
ORDER BY hire_date DESC;

이 쿼리는 최근 고용된 날짜부터 오래된 순으로 정렬된 데이터를 반환합니다.

5. ORDER BY와 WHERE 절 함께 사용하기

ORDER BYWHERE 절과 함께 사용되어 데이터를 필터링한 후 정렬할 수 있습니다.

예제:

SELECT name, salary
FROM employees
WHERE department = 'Sales'
ORDER BY salary DESC;

이 쿼리는 Sales 부서에 속한 직원들 중에서 급여가 높은 순서대로 정렬하여 반환합니다.

6. ORDER BY와 LIMIT 함께 사용하기

LIMIT 절과 함께 사용하여 정렬된 결과에서 상위 몇 개의 행만 반환할 수 있습니다.

예제:

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;

이 쿼리는 전체 직원 중에서 급여가 높은 상위 5명의 데이터를 반환합니다.

7. ORDER BY와 GROUP BY 함께 사용하기

GROUP BY와 함께 ORDER BY를 사용하면 그룹화된 결과를 정렬할 수 있습니다.

예제:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
ORDER BY avg_salary DESC;

이 쿼리는 부서별 평균 급여를 계산하고, 평균 급여가 높은 부서부터 내림차순으로 정렬하여 반환합니다.

8. 실전 예제

예제 1: 이름을 기준으로 오름차순 정렬

SELECT name, department, salary
FROM employees
ORDER BY name ASC;

이 쿼리는 직원들의 이름을 알파벳 순서대로 정렬하여 반환합니다.

예제 2: 고용 날짜를 기준으로 가장 최근에 고용된 직원 조회

SELECT name, hire_date
FROM employees
ORDER BY hire_date DESC
LIMIT 1;

이 쿼리는 가장 최근에 고용된 직원을 조회합니다.

예제 3: 특정 부서에서 급여가 높은 상위 3명의 직원 조회

SELECT name, salary
FROM employees
WHERE department = 'HR'
ORDER BY salary DESC
LIMIT 3;

이 쿼리는 HR 부서에서 급여가 높은 상위 3명의 직원 이름과 급여를 반환합니다.

요약

SQL ORDER BY 절은 조회 결과를 특정 열을 기준으로 오름차순 또는 내림차순으로 정렬할 수 있는 매우 유용한 도구입니다. 여러 열을 기준으로 복합 정렬이 가능하며, 문자열, 숫자, 날짜 등 다양한 데이터 타입을 정렬할 수 있습니다. 또한 ORDER BYWHERE, LIMIT, GROUP BY와 결합하여 보다 강력한 데이터 조회 및 분석을 지원합니다. 정렬된 데이터를 통해 원하는 정보를 더 쉽게 찾고 가독성을 높일 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com