
4주차 강의 03.subquery 연습해보기 에 11) 문제에서 정답 코드를 확인하였고,
같은 결과를 얻기 위해 다른 방식으로 SQL을 작성해보았는데, 나온 결과 값에 차이가 있습니다.
어디서 차이가 발생한 것인지 즉, 제가 짠 SQL은 왜 틀린 것인지 모르겠어서 문의드립니다.
정답의 경우 각 subquery 에 대하여 count 후 inner join 한 것이고,
저의 경우, join(테이블 특성 상 orders 로 outer join) 에 대한 결과를 subquery 로 count 했다고 생각합니다.
정답 코드)
select a.course_id, b.cnt_checkins, a.cnt_total from
(
select course_id, count(distinct(user_id)) as cnt_total from orders
group by course_id
) a
inner join (
select course_id, count(distinct(user_id)) as cnt_checkins from checkins
group by course_id
) b
on a.course_id = b.course_id;
나의 코드)
select table1.course_id, count(DISTINCT(table1.c_user_id)) as cnt_checkins, count(DISTINCT(table1.user_id)) as cnt_total
from (
select o.user_id, o.course_id, c.user_id as c_user_id
from orders o
left outer join
checkins c
on o.user_id = c.user_id
) as table1
group by table1.course_id
order by table1.course_id desc;
정답 결과)

나의 결과)

오류는 발생하지 않았습니다.
