티스토리 뷰
서브쿼리(Subquery)는 SQL문에 포함되어 있는 또 다른 SQL문으로써 최종 출력을 위한 보조 역할을 하는 SQL문입니다. 즉 서브쿼리(Subquery)는 특정 값을 가지고 있는 row의 다른 칼럼이 필요할 때 활용할 수 있습니다. 서브쿼리(Subquery)는 메인 SQL문에서 GROUP BY를 제외한 모든 곳에 작성할 수 있고 작성되는 위치와 반환 값에 따라 명칭이 달라집니다.
- 인라인 뷰(Inline view) : FROM 절에 사용되는 서브쿼리, 결과가 동적으로 생성된 테이블처럼 사용할 수 있지만 임시적인 View이기 때문에 데이터 베이스에 저장되지 않습니다.
- 스칼라 서브쿼리 : SELECT 절에 사용되는 서브쿼리, 결괏값으로 하나의 값(단일 행)을 반환합니다.
- 서브쿼리 : WHERE 절에 사용되는 서브쿼리
<위치에 따라 사용되는 서브쿼리>
- 단일 행 서브쿼리 : 서브쿼리에서 한 행에 대한 값만 반환하는 것, 메인 쿼리의 WHERE 절에서 사용한다면 단일 행 비교 연산자(>, <, <= 등)를 사용한다.
- 다중 행 서브쿼리 : 서브쿼리에서 여러 행에 대한 결과 값을 반환하는 것, 메인 쿼리의 WHERE 절에서 사용한다면 다중 행 비교 연산자를 사용한다.
- IN : 반환되는 여러 개의 행 중 하나만 참이어도 참
- ALL : 메인쿼리와 서브쿼리의 결과가 모두 동일하면 참
- EXISTS : 서브쿼리 결과를 만족하는 값이 존재하는지 여부를 확인
<반환 값에 따른 서브쿼리>
ex) sakila 데이터베이스에서 customer_id가 5인 고객의 대여횟수, customer_id, first_name, last_name을 구하시오.
SELECT C.customer_id, C.first_name, C.last_name,
(SELECT COUNT(rental_id) FROM sakila.rental WHERE customer_id=C.customer_id) AS total_rent
FROM sakila.customer C
WHERE C.customer_id=5;
ex) sakila 데이터베이스에서 대여횟수가 10회 이상인 고객의 customer_id, first_name, last_name, 대여 횟수를 구하시오. 결과는 대여 횟수 기준으로 오름차순 정렬하세요
SELECT C.customer_id, C.first_name, C.last_name,
(SELECT COUNT(R.rental_id) FROM sakila.rental R WHERE C.customer_id=R.customer_id
GROUP BY R.customer_id HAVING COUNT(R.rental_id)>=10) AS total_rent
FROM sakila.customer C
ORDER BY total_rent ASC;
'MySQL' 카테고리의 다른 글
[3] WITH 문 연습 (0) | 2025.04.08 |
---|---|
[1] SQL 코딩테스트 문법 정리 (0) | 2025.01.05 |
TAG
- #attention #deeplearning
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- 머신러닝 #project #classification #dacon
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- seaborn #데이터시각화 #타이타닉
- #opencv #이미지 연산 #합성
- #docker #container #docker command
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐
- #프로그래머스 #안전지대 #시뮬레이션
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- python #프로그래머스 #리스트 #인덱싱
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- 머신러닝 #lightgbm #goss #ebf
- python #프로그래머스 #겹치는선분의길이
- #polars #대용량 데이터셋 처리
- nlp #토큰화 #nltk #konply
- #tf idf
- 머신러닝 #xgboost #
- 잘라서 배열로 저장하기 #2차원으로 만들기
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- # 프로그래머스 # 카펫 # 완전탐색
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- #seq2seq #encoder #decoder #teacher forcing
- #docker #image #build #dockerfile
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- # 할인행사 #counter #딕셔너리 #프로그래머스
글 보관함
최근에 올라온 글