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 테이블의 각 행마다 실행되며, 단일 값(평균 급여)를 반환 함
'✏️ SQLD' 카테고리의 다른 글
[SQLD] WHERE절과 HAVING절의 차이 (0) | 2025.03.01 |
---|---|
[SQLD] HAVING절 (0) | 2025.03.01 |
[SQLD] GROUP BY절, 집계함수, 제약사항 (0) | 2025.03.01 |
[SQLD] WHERE 절: IN, BETWEEN, LIKE, IS NULL (0) | 2025.03.01 |
[SQLD] WHERE 절: 논리 연산자, 연산자 우선순위 (0) | 2025.02.28 |