반응형
inner join
select *
from users u
inner join point_users p
on u.user_id = p.user_id
- '오늘의 다짐' 정보에 과목 정보를 연결해 과목별 '오늘의 다짐' 갯수를 세어보자!
select co.title, count(co.title) as checkin_count
from checkins ci
inner join courses co
on ci.course_id = co.course_id
group by co.title
- 유저의 포인트 정보가 담긴 테이블에 유저 정보를 연결해서, 많은 포인트를 얻은 순서대로 유저의 데이터를 뽑아보자!
select *
from point_users p
inner join users u
on p.user_id = u.user_id
order by p.point desc
- 주문 정보에 유저 정보를 연결해 네이버 이메일을 사용하는 유저 중, 성씨별 주문건수를 세어보자!
select u.name, count(u.name) as count_name
from orders o
inner join users u
on o.user_id = u.user_id
where u.email like '%naver.com'
group by u.name
- 쿼리 실행 순서
from → join → where → group by → select
Left Join
select *
from users u
left join point_users p
on u.user_id = p.user_id
퀴즈
7월10일 ~ 7월19일에 가입한 고객 중, 포인트를 가진 고객의 숫자, 그리고 전체 숫자, 그리고 비율을 보고 싶어요! 아래와 같은 결과를 보고 싶다면 어떻게 해야할까요?
select count(point_user_id) as pnt_user_cnt,
count(*) as tot_user_cnt,
round(count(point_user_id)/count(*),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'
Union
union을 하기 위한 전제조건은 합하고자하는 데이터들의 필드명이 같아야합니다.
select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at < '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
(
select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at < '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)
union all
(
select '8월' as month, c.title, c2.week, count(*) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at > '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)
반응형
'Database' 카테고리의 다른 글
[DataBase] typeORM find시 어떤 칼럼을 기준으로 찾아야 빠를까? (1) | 2022.06.08 |
---|---|
[SQL] Subquery (0) | 2022.04.20 |
[WIL] ORM, noSQL vs SQL (0) | 2022.04.17 |
[Database] ORM과 DB의 차이 (0) | 2022.04.12 |