티스토리 뷰

SELECT 문의 구성 요소

  • SELECT
  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT

`SELECT` 문은 다음과 같은 여러가지 절로 구성되어 있습니다. 각 절에 대해 간단히 알아보겠습니다.

SELECT

조회할 컬럼을 선택합니다.

SELECT name, age

FROM

데이터를 조회할 테이블을 지정합니다.

FROM employees

WHERE

조건에 맞는 레코드를 필터링합니다.

WHERE age > 30

GROUP BY

값이 같은 행들을 그룹으로 묶습니다.

GROUP BY department

HAVING

그룹화된 데이터에 조건을 적용하여 필터링합니다.

HAVING COUNT(*) > 5

ORDER BY

데이터들을 정렬합니다.

ORDER BY salary DESC

LIMIT

보여지는 행 수를 제한합니다.

LIMIT 10

처리순서

SQL은 우리가 `SELECT`문을 작성하는 순서와는 다른 순서로 명령을 처리합니다. 처리순서는 `FROM` -> `WHERE` -> `GROUP BY` -> `HAVING` -> `SELECT` -> `ORDER BY` -> `LIMIT` 순으로 처리됩니다.

  1. FROM: 데이터를 가져올 테이블을 정합니다.
  2. WHERE: FROM 절에서 가져온 데이터 중 조건에 맞는 행을 필터링합니다.
  3. GROUP BY: 필터링된 데이터를 지정된 컬럼으로 그룹화합니다.
  4. HAVING: 그룹화된 데이터에 조건을 적용하여 반환할 컬럼을 정합니다.
  5. SELECT: 필터링되고 그룹화된 데이터에서 반환할 컬럼을 선택합니다.
  6. ORDER BY: 최종 결과를 지정된 컬럼을 기준으로 정렬합니다.
  7. LIMIT: 정렬된 결과에서 반환할 행 수를 제한합니다.
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE age > 30
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY employee_count DESC
LIMIT 10;
  1. `FROM employees`: `employees` 테이블에서 데이터를 가져옵니다.
  2. `WHERE age > 30`: 나이가 30보다 큰 직원만 필터링합니다.
  3. `GROUP BY department`: `department` 컬럼을 기준으로 데이터를 그룹화합니다.
  4. `HAVING COUNT(*) > 5`: 각 부서에 직원이 5명 이상인 경우만 필터링 됩니다.
  5. `SELECT department, COUNT(*) AS employee_count`: 부서명과 직원 수를 선택합니다.
  6. `ORDER BY employee_count DESC`: 직원 수를 기준으로 내림차순으로 정렬합니다.
  7. `LIMIT 10`: 상위 10개의 결과만 반환합니다.

이 쿼리는 나이가 30세 이상인 직원들을 대상으로 각 부서별 직원 수를 계산하고, 직원 수가 5명 이상인 부서만을 선택하여 직원 수 기준으로 내림차순으로 정렬한 후 상위 10개의 부서를 반환합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함