👉 기본 SELECT 예제
SELECT department_id
, COUNT(employee_id) AS number_of_employees
, AVG(salary) AS average_salary
FROM employees
WHERE hire_date > '2010-01-01'
GROUP BY department_id
HAVING AVG(salary) > 50000
ORDER BY department_id;
- 📌 해당 쿼리의 역할
employees
테이블을 사용하며, 각 부서(department)별로 평균 급여를 계산하고, 평균 급여가 특정 값보다 높은 부서만을 선별하여, 이들의 부서별 직원 수와 평균 급여를 부서 번호로 정렬해서 보여줌
- 📌 각 구문의 역할
SELECT
: 조회할 컬럼이나 표현식을 지정
FROM
: 데이터를 조회할 테이블을 지정
WHERE
: 특정 조건에 부합하는 행(row)을 필터링
GROUP BY
: 지정된 컬럼의 값이 같은 행들을 집계 단위로 묶음
HAVING
: GROUP BY
로 묶인 결과에 대해 특정 조건을 만족하는 그룹을 필터링
ORDER BY
: 결과를 정렬 ⇒ 이 경우에는 department_id
를 기준으로 정렬
- 📌 집계 함수
COUNT(employee_id)
: 지정된 부서의 직원 수를 셈
AVG(salary)
: 지정된 부서의 직원들의 평균 급여를 계산
👉 쿼리의 처리 순서
FROM
→ WHERE
→ GROUP BY
→ HAVING
→ SELECT
→ ORDER BY
👉 예시 쿼리 처리 순서
FROM
: employees
테이블에서 조회
WHERE
: 고용 일자가 2010-01-01보다 큰 데이터만 필터링
GROUP BY
: 필터링이 완료된 데이터의 department_id가 같은 경우 그룹화
HAVING
: 그룹화 이후에 평균 급여가 50,000 이상인 경우로 필터링
SELECT
: 최종적으로 출력될 컬럼(deparment_id, AVG(salary), COUNT(employee_id)) 확인
ORDER BY
: 정렬 기준에 맞춰 정렬 후 출력