서브쿼리의 힘: 하위 쿼리를 활용한 복잡한 데이터 추출
2023. 11. 13. 19:26ㆍ개발 문서/SQL
728x90
반응형
서브쿼리(subquery)는 하위 쿼리로, 다른 쿼리 안에서 사용되는 쿼리입니다. 서브쿼리는 주로 복잡한 데이터 추출이나 조건에 따른 필터링에 사용됩니다. 서브쿼리는 SELECT, FROM, WHERE, HAVING, 등 다양한 SQL 문에서 사용될 수 있습니다.
다음은 몇 가지 서브쿼리의 예시입니다:
SELECT 문에서의 서브쿼리:
SELECT column1, column2, ... FROM table_name WHERE column_name operator (SELECT column_name FROM another_table WHERE condition);
예를 들어, "employees" 테이블에서 특정 부서의 평균 급여보다 높은 급여를 받는 직원을 찾고자 할 때:
SELECT employee_id, first_name, last_name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = 10);
FROM 절에서의 서브쿼리:
SELECT column1, column2, ... FROM (SELECT column_name FROM table_name WHERE condition) AS alias_name;
예를 들어, 각 부서별로 가장 높은 급여를 받는 직원을 찾고자 할 때:
SELECT department_id, MAX(salary) AS max_salary FROM employees GROUP BY department_id; -- 이를 기반으로 각 부서의 최고 급여를 가진 직원 찾기 SELECT e.employee_id, e.first_name, e.last_name, e.salary FROM employees e JOIN ( SELECT department_id, MAX(salary) AS max_salary FROM employees GROUP BY department_id ) subquery ON e.department_id = subquery.department_id AND e.salary = subquery.max_salary;
IN 연산자를 사용한 서브쿼리:
SELECT column1, column2, ... FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition);
예를 들어, 특정 부서에 속한 직원들을 찾고자 할 때:
SELECT employee_id, first_name, last_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'IT');
서브쿼리를 적절히 활용하면 데이터 추출과 필터링을 더욱 정확하고 효과적으로 수행할 수 있습니다.
'개발 문서 > SQL' 카테고리의 다른 글
트랜잭션 처리: COMMIT과 ROLLBACK의 역할과 활용법 (0) | 2023.11.13 |
---|---|
SQL Injection 방어: 보안 측면에서의 중요성과 방어 기술 소개` (0) | 2023.11.13 |
데이터 정렬: ORDER BY 절의 활용과 정렬 옵션 (0) | 2023.11.13 |
집계 함수 활용하기: SUM, AVG, COUNT 등의 활용법 (0) | 2023.11.12 |
데이터 필터링: WHERE 절을 활용한 데이터 추출 (1) | 2023.11.12 |