데이터베이스(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가 무용지물.
즉, 합친상태에서 다시 정렬을 해줘야지, 정렬한 상태로 합치면 효과가 없다.