1. Subquery 개념 익히기
: Subquery란 SELECT, FROM, WHERE 절 하위의 작은 쿼리
→ 실행순서는 Subquery 돌리고 큰 Main query 순으로 진행된다
2. Where절의 Subquery : Where 필드명 in (subquery)
→ Where은 조건문, Subquery의 결과를 조건에 활용하는 방식으로 활용
⁕Subquery의 user_id 메인 query의 user_id 안에 있니? (Where절로 조건 형성)
2-1) inner join을 활용한 기본 구문
SELECT u.user_id , u.name , u.email FROM users u
inner join orders o on u.user_id = o.user_id
WHERE o.payment_method = 'kakaopay';
1-2) Where절 Subquery 활용
SELECT u.user_id, u.name, u.email FROM users u
WHERE u.user_id in (
select o.user_id FROM orders o
WHERE o.payment_method = 'kakaopay'
)
⁕Subquery의 user_id 메인 query의 user_id 안에 있니? (Where절로 조건 형성)
2. SELECT 절의 Subquery
SELECT c.checkin_id,
c.user_id,
c.likes,
(
SELECT avg(likes) FROM checkins
WHERE user_id = c.user_id
) as avg_likes_user
FROM checkins c
3. FROM 절의 Subquery
SELECT pu.user_id, pu.point, a.avg_likes FROM point_users pu
inner join (
SELECT user_id, round(avg(likes),1) as avg_likes FROM checkins
group by user_id
)
a on pu.user_id = a.user_id
4. Subquery 퀴즈
4-1.
A. 포인트가 전체 평균보다 큰 유저 추출하기
Q, SELECT * FROM point_users pu
WHERE pu.point > (
SELECT round(avg(point),0)FROM point_users
)
▶참고: SELECT round(avg(point),0)FROM point_users
4-2.
A. 이씨 성을 가진 유저의 포인트의 평균보다 큰 유저들의 데이터 추출하기
Q-1. Inner join 활용
SELECT * FROM point_users pu
WHERE pu.point > (
SELECT round(avg(point),0)FROM point_users pu
inner join users u on pu.user_id = u.user_id
WHERE u.name like '이%'
)
Q-2. Subquery 활용
SELECT * FROM point_users pu
WHERE pu.point > (
select avg(pu.point) from point_users pu
where user_id in(
select user_id from users where name like '이%'
)
)
SELECT c.checkin_id,
c.course_id,
c.user_id,
c.likes,
(select avg(likes) FROM checkins
WHERE course_id = c.course_id
)
FROM checkins c
select course_id, avg(likes) FROM checkins c
group by course_id
'허씨의 편람 > 자기개발' 카테고리의 다른 글
[개발일지] SQL 입문 4주차-3 (0) | 2022.02.05 |
---|---|
[개발일지] SQL 입문_4주차-2 (0) | 2022.02.02 |
[개발일지] SQL 입문_3주차 (0) | 2022.01.31 |
[개발일지] SQL 입문_2주차-1 (0) | 2022.01.23 |
[개발일지] 마케터 데이터 분석 실무 활용을 위한 왕초보 SQL 기초 공부 정리 (0) | 2022.01.23 |