728x90
▶️ 1. 서브 쿼리(Subquery)란?
서브쿼리(Subquery)는 SQL문 안에 포함된 또 다른 SQL문을 의미합니다. 서브쿼리를 사용하는 위치는 다음과 같습니다.
- 사용 위치:
- SELECT 절: 스칼리 서브쿼리, 하나의 값 반환
- FROM 절: 인라인 뷰처럼 사용
- WHERE 절: 조건 비교용
- HAVING 절: 집계 조건 비교
- INSERT, UPDATE, DELETE 문도 활용 가능
즉, 큰 쿼리(메인 쿼리, Outer Query)안에서 작은 쿼리(서브 쿼리, Inner Query)를 실행시켜 값을 가져오는 구조입니다.
▶️ 2. SELECT 절 안에 사용하는 서브쿼리 (스칼라 서브쿼리)
SELECT
c.universe_id,
c.name,
c.year,
(SELECT AVG(year) FROM computers) AS avg_year
FROM computers c;
- (SELECT AVG(year) FROM computers) 이 부분이 서브쿼리 부분
- 이 서브쿼리는 전체 학생의 평균 학년을 구함
- 메인쿼리의 SELECT 절 안에서 avg_year이라는 새로운 컬럼처럼 붙음
- 결과적으로 각 학생 정보 옆에 전체 학년 평균이 함께 출력
▶️ 3. 학생별 등급 중 가장 높은 학점을 붙여보기
SELECT
c.name,
c.major,
(SELECT MAX(d.grade)
FROM degrees d
WHERE d.universe_id = c.universe_id) AS best_grade
FROM computers c;
- 서브쿼리 (SELECT MAX(d.grade) ...)는 각 학생의 성적 테이블에서 최고 학점을 가져옴
- WHERE d.universe_id = c.universe_id 로 메인쿼리의 행과 연결.
- 결과: 학생 별로 "본인 이름, 전공, 최고 학점" 같이 나옴
▶️ 4. SELECT 안 서브쿼리 사용 시 주의점
SELECT 안 서브쿼리 사용 시 주의점은 반드시 하나의 값만 반환해야합니다.
SELECT (SELECT name FROM computers);
- 여기서 여러 행이 나오면 오류가 발생
- 여러 값이 필요할 경우 JOIN 또는 FROM 절 서브쿼리를 사용
☑️ 정리
- 서브쿼리(Subquery) = SELECT 안의 SELECT
- 예시
- 모든 학생 정보와 전체 학년 평균 값을 함께 출력
- 학생 별로 본인 최고 성적을 함께 출력
- 핵심: 결과가 반드시 단일 값이어야 하고, 컬럼처럼 붙는다는 것이 특징
GitHub - Koras02/postgresql-bloging: https://thinky.tistory.com/category/Database/PostGresQL
https://thinky.tistory.com/category/Database/PostGresQL - Koras02/postgresql-bloging
github.com
728x90
LIST
'Database > PostGresQL' 카테고리의 다른 글
[PostgreSQL] 2장 - 고급 SQL 활용하기 - 조인(JOIN) (1) | 2025.08.30 |
---|---|
[PostgreSQL] 1장 - 데이터베이스와 테이블 (2) | 2025.08.30 |
[PostGreSQL] PostgreSQL 이란? (0) | 2025.02.22 |