중첩 쿼리란 한 쿼리 안에 또 다른 쿼리를 포함하는 것을 말합니다. 중첩 쿼리를 사용하면 여러 테이블 간의 관계를 분석하거나, 데이터를 필터링하거나, 특정 조건에 따라 그룹화하고 이에 대한 집계 함수를 적용할 수 있습니다.
이번 포스트에서는 중첩 쿼리를 사용하여 데이터를 그룹화하고, 그에 따라 집계 함수를 적용하는 방법에 대해 알아보겠습니다.
데이터 그룹화
데이터 그룹화란 특정 기준에 따라 데이터를 그룹으로 묶는 것을 말합니다. 예를 들어, 한 회사의 직원 데이터가 있다고 할 때, 데이터를 부서별로 그룹화하여 각 부서의 평균 연봉을 구하는 것이 데이터 그룹화의 한 예입니다.
먼저, 중첩 쿼리를 사용하여 데이터를 그룹화하는 방법을 살펴보겠습니다. 아래는 부서별 평균 연봉을 구하는 쿼리의 예시입니다.
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
위의 쿼리는 직원 테이블에서 부서별로 평균 연봉을 구하는 것을 보여줍니다. 여기서 GROUP BY
절은 부서별로 데이터를 그룹화하고, AVG
함수는 각 그룹에 대한 평균 값을 계산합니다.
집계 함수 적용
집계 함수는 특정 그룹에 대한 집계(합계, 평균, 개수 등)를 계산하는 함수를 말합니다. 중첩 쿼리를 사용하여 특정 그룹에 대한 집계 함수를 적용할 수 있습니다.
아래는, 위에서 그룹화한 결과를 바탕으로 평균 연봉이 특정 값 이상인 부서를 찾는 쿼리의 예시입니다.
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
위의 쿼리에서 HAVING
절은 그룹화된 데이터에 대한 조건을 지정하는데 사용됩니다. 이 쿼리는 평균 연봉이 50000 이상인 부서를 찾는 것을 보여줍니다.
중첩 쿼리를 사용하여 데이터를 그룹화하고, 그에 따라 집계 함수를 적용하는 방법에 대해 알아보았습니다. 데이터 분석이나 보고서 작성 등 다양한 상황에서 중첩 쿼리를 효과적으로 활용할 수 있으니, 데이터베이스 쿼리 작성 시 유용하게 활용해 보시기 바랍니다.
참고 문헌:
- https://www.w3schools.com/sql/sql_groupby.asp
- https://www.sqltutorial.org/sql-having/
- https://www.sqlshack.com/use-of-the-having-clause-in-sql-server/