본문 바로가기

SQL

서브쿼리: 서브쿼리를 사용하여 중첩된 쿼리 작성 방법.

반응형

서브쿼리(Subquery)는 다른 SQL 쿼리문 내에 포함된 쿼리입니다. 서브쿼리를 사용하여 복잡한 조건을 기반으로 데이터를 검색하거나, 한 쿼리의 결과를 다른 쿼리의 입력으로 사용할 수 있습니다. 서브쿼리는 주로 WHERE, FROM, SELECT 절 내에서 사용될 수 있으며, 단일 행 또는 다중 행 결과를 반환할 수 있습니다. 다음은 서브쿼리를 사용하는 다양한 예제입니다.

관련 예제


예제 1: 단일 행 서브쿼리

SELECT * 
FROM Employees 
WHERE Salary > (SELECT AVG(Salary) FROM Employees);
모든 직원 중에서 평균 급여보다 더 많은 급여를 받는 직원들을 찾습니다.


예제 2: 다중 행 서브쿼리

SELECT * 
FROM Products 
WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Quantity > 10);
주문 수량이 10개 이상인 모든 제품을 찾습니다.

 

예제 3: 존재 여부 판단 (EXISTS)

SELECT * 
FROM Suppliers 
WHERE EXISTS (SELECT * FROM Products WHERE Products.SupplierID = Suppliers.SupplierID AND Price < 20);
가격이 20 미만인 제품을 공급하는 모든 공급업체를 찾습니다.

 

예제 4: 서브쿼리를 사용한 정렬 (ORDER BY)

SELECT EmployeeID, (SELECT COUNT(*) FROM Orders WHERE Orders.EmployeeID = Employees.EmployeeID) AS NumberOfOrders
FROM Employees
ORDER BY NumberOfOrders DESC;
직원별로 처리한 주문의 수를 계산하고, 그 결과를 기반으로 직원들을 정렬합니다.


예제 5: 서브쿼리를 사용한 열 값 생성 (SELECT 절)

SELECT EmployeeID, Name, (SELECT MAX(Salary) FROM Salaries WHERE Salaries.EmployeeID = Employees.EmployeeID) AS MaxSalary
FROM Employees;
각 직원별로 받은 최대 급여를 조회합니다.


관련 전문용어 설명
서브쿼리(Subquery): 다른 SQL 쿼리 내부에 포함되는 쿼리문입니다. 결과를 외부 쿼리에 제공합니다.
단일 행 서브쿼리: 하나의 결과만 반환하는 서브쿼리입니다.
다중 행 서브쿼리: 여러 행을 반환할 수 있는 서브쿼리입니다.
EXISTS: 서브쿼리가 하나 이상의 결과를 반환하는지 여부를 확인하는 논리 연산자입니다.

반응형