강의 요약노트 :
' 패스트캠퍼스 SQL100제 + 자격증 온라인 완주반 ' 강의 내용 일부 요약정리.
쿼리 공부할때는 직접 쳐보면서 공부하지 않으면 절대 늘지 않는다고 해서 블로그에 정리해봅니다.
실제 회사에서 SQL를 손으로 쓸일이 없는데 메모장에 노트필기하는것이 점점 의미없다는 생각이 들어서요.
그리고 저처럼 키초코딩공부를 하시는 분들에게 조금이나마 도움이 되었으면 좋겠습니다.
---------------------------------------------------------------------------------------------------------------------
써브쿼리란?
SQL에서 메인 쿼리가 아닌 하위에 존재하는 쿼리를 말함.
- 메인 SQL이 있고 그 밑에 SUB쿼리가 있다. 즉 다양한 결과를 뽑을 수 있다. 메인 SQL은 1개라고 할 수 있고 그 밑에 다양한 써브쿼리가 존재할 수 있다. 예를들어 아래의 2개 SQL를 결합하여 하나의 SQL 문으로 결과를 도출할 수 없을까?
요럴때 쓰는것이 바로 써브쿼리이다.
1. Rental Rate의 평균을 구한다.
Select AVG(Rental_rate)
from flim ;
2. Rental_RATE의 평균보다 큰 Rental_RATE 집합 구하기
: 1번이 하나의 조건을 구한다면, 평균보다 더 큰 집합을 구하는 조건이 필요할 때 쓰는 것이 바로 써브쿼리입니다.
Select film_ID, Title, Rental_rate
from Film
Where Rental_Rate > 2.98
* 중첩서브쿼리
Select
flim_ID, Title, Rental_Rate
From Film
Where Rental_Rate >
( Select AVG (Rental_Rate) From Film ) ;
* 써브쿼리 중 인라인뷰?
또 이 서브쿼리안에는 종류가 있습니다. ' 라인안에 들어갔다고 해서 From 절 안에 들어간 뷰를 인라인뷰' 라고 합니다.
Select A.Flim_ID, A.Title, A.Rental_Rate
From Film A
, (
Select
AVG (Rental__Rate) AS AVG_Rental_Rate
From Film ) B
Where A.Rental_Rate > B.AVG_Rental_Rate
-> 인라인뷰에서 Rental Rate의 평균을 구하고 A테이블에서 평균보다 큰 애를 구한다.
* 스칼라 서브쿼리?
인라인뷰안에 들어간 쿼리.
Select
A.Film_ID,
A.Title
A.Rental_Rate,
From
( SELECT
A.Film_ID,
A.Title,
A.Rental_RATE
, ( SELECT AVG(L.RENTAL_RATE)
From Film L
) AS AVG_RENTAL_RATE
From Film A
) A
WHERE A.Rental_Rate > A.AVG_Rental_Rate ;
- 예문 -
2020년 5월 27일에 반납한 고객 아이디를 추출해서 해당고객의 이름과 성을 추출하라
select First name, Last name
From customer
Where Customer_ID in (
Select
Customer Id
From Rental
Where
Cast (Return_date AS DATE)='2020-05-27');
* 써브쿼리를 하지 않고 그 위에다가 그냥 다 써도 되는 것은 아니가? 라고 생각할 수도 있지만
그러면 데이터가 중복되는 것이다.
PAYMENT 테이블에서 단길거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER ID를 추출하라
단, Customer ID의 값은 유일해야한다.
Select
Distinct A.CUSTOMER_ID
From PAYMENT A
WHERE A.AMOUNT =
( SELECT
K. AMOUNT
From PAYMENT K
ORDER BY K.AMOUNT DESC
LIMIT 1 )
필름 A에 있는 렌탈레이트는 필름 B에 있는 렌탈레이트보다 큰것을 보여주겠다.
Select
A.Film_id
A.Title
A.Rental_Rate
From Film A
, ( Select
AVG (Rental_Rate) as AVG_RENTAL_RATE
FROM FIML
) B
WHERE A.RENTAL_RATE > B.AVG_RENTAL_RATE
'데이터분석공부' 카테고리의 다른 글
데이터분석공부 기초SQL To char / To date (0) | 2022.05.28 |
---|---|
데이터분석공부 SQL기초 CASE WHEN THEN ELSE END AS (0) | 2022.05.28 |
데이터분석공부 SQL LIKE % (0) | 2022.05.28 |
데이터분석공부 SQL LEFT JOIN 이란? (0) | 2022.05.28 |
엑셀로배우는데이터분석, 광고투자비와 유입자사이의 상관관계 (0) | 2022.05.28 |