잉?

[엑셀보다 쉬운 SQL] 3주차 + 기본 sql 문법 본문

데이터베이스(DB)/SQL

[엑셀보다 쉬운 SQL] 3주차 + 기본 sql 문법

Jye_647 2023. 5. 8. 16:24

테이블을 연결하는 Join

두 테이블의 공통된 정보 (key값)을 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미


Join 종류

 

Left Join?

select * from users u
left join point_users p on u.user_id = p.user_id

user_id를 기준으로 조인해준다.

없으면 NULL로 보여준다.

*누구에게 누구를 붙이는지 순서가 중요하다.

*한쪽에는 있는데 다른 한쪽에는 없는 것을 가지고 통계내고 싶을 때 사용한다.


💡7월 10일 ~ 7월 19일에 가입한 고객 중, 포인트를 가진 고객의 숫자, 그리고 비율을 보여주세요.

*count는 NULL을 세지 않는다.

즉, is not NULL을 할 필요가 없다.

 

답)

select count(pu.point) as pnt_user_cnt,
count(u.user_id) as tot_user_cnt,
round(count(pu.point) / count(u.user_id), 2) as ratio
from users u
left join point_users pu on u.user_id= pu.user_id
where u.created_at between '2020-07-10' and '2020-07-20'

Inner Join?

select * from users u
inner join point_users p on u.user_id = p.user_id

user_id를 기준으로 조인한다 즉, 교집합

*sql 쿼리가 실행되는 순서 (from → join → select)


결과물 합치기, Union

(sql문)

union all

(sql문)

 

*union안에서는 order by가 무용지물.

즉, 합친상태에서 다시 정렬을 해줘야지, 정렬한 상태로 합치면 효과가 없다.

Comments