✏️ SQLD

[SQLD] 스칼라 서브쿼리

haeriyouu 2025. 3. 3. 22:45

Scalar Subquery

🔎 SELECT 절에서 단일 값을 반환하는 서브쿼리이다. 하나의 행(row)과 하나의 열(column)만 반환해야 한다.

 

📌 단일행 서브쿼리(Single-Row Subquery)와 차이점

구분 스칼라 서브쿼리 단일행 서브쿼리
반환 값 하나의 단일 값 (1개의 행과 컬럼) 하나의 행 (여러 컬럼 가능)
사용 위치 SELECT, WHERE, HAVING, ORDER BY 절 등 WHERE, HAVING 절
사용 방식 일반 컬럼처럼 사용 연산자(=, >, < 등)와 함께 사용
실행 방식 각 행마다 실행됨 일반적으로 독립적인 쿼리 실행

 

🗒️ 예제

SELECT A.ENAME, A.SAL, A.DEPTNO
FROM EMP A
WHERE (SELECT ROUND(AVG(X.SAL),2)
       FROM EMP X
       WHERE X.DEPTNO = A.DEPTNO) > A.SAL;

🔎 코드 분석

주요 요소 분석
메인쿼리 EMP 테이블에서 직원(ENAME), 급여(SAL), 부서번호(DEPTNO)를 조회
서브쿼리 동일 부서(DEPTNO)의 평균 급여를 계산 (소수점 둘째 자리 반올림)
WHERE 조건 직원의 급여(A.SAL)가 해당 부서 평균 급여보다 낮을 경우 조회

 

🔎 스칼라 서브쿼리 부분 분석

(SELECT ROUND(AVG(X.SAL),2)
 FROM EMP X
 WHERE X.DEPTNO = A.DEPTNO)

1️⃣ X.DEPTNO = A.DEPTNO ➡️ 같은 부서(DEPTNO) 직원들의 평균 급여를 구함

2️⃣ ROUND(AVG(X.SAL),2) ➡️ 평균 급여를 소수점 둘째 자리까지 반올림

✅ 이 서브쿼리는 A 테이블의 각 행마다 실행되며, 단일 값(평균 급여)를 반환 함