개발일지/DataBase
with
E-room
2022. 7. 2. 16:29
728x90
with절
subquery가 너무 많아서 알아보기 힘들 때 사용
서브쿼리가 많아져서 지저분해 보임
select c.title,
a.cnt_checkins,
b.cnt_total,
(a.cnt_checkins/b.cnt_total) as ratio
from
(
select course_id, count(distinct(user_id)) as cnt_checkins from checkins
group by course_id
) a
inner join
(
select course_id, count(*) as cnt_total from orders
group by course_id
) b on a.course_id = b.course_id
inner join courses c on a.course_id = c.course_id
with절로 정리해줌
with table1 as (select course_id, count(distinct(user_id)) as cnt_checkins from checkins
group by course_id),
table2 as (select course_id, count(*) as cnt_total from orders
group by course_id)
select c.title,
a.cnt_checkins,
b.cnt_total,
a.cnt_checkins/b.cnt_total as ratio
from table1 a
inner join table2 b on a.course_id = b.course_id
inner join courses c on a.course_id = c.course_id
한눈에 보기에 편해진다.
서브쿼리들에 미리 별칭을 붙여놨다가 메인 쿼리에서 꺼내 쓴다.
728x90