
안녕하세요!
SQL반 3주차-7 강의에서 맨 마지막 숙제를 하던 중 질문이 생겼습니다.
우선 숙제는 "enrolled_id별 수강완료(done=1)한 강의 갯수를 세어보고, 완료한 강의 수가 많은 순서대로 정렬해보기.
user_id도 같이 출력되어야한다." 이구요
아래에 정답 코드와 출력결과 캡쳐화면이 있습니다.
select e.enrolled_id,
e.user_id,
count(*) as cnt
from enrolleds e
inner join enrolleds_detail ed on e.enrolled_id = ed.enrolled_id
where ed.done = 1
group by e.enrolled_id, e.user_id
order by cnt desc

#1. inner join을 left join으로 바꿔도 동일한 결과가 출력되는 것으로 보이는데, 이 문제에서는 왜 inner join이 사용되었는지 궁금합니다.
#2. 아래 코드와 같이 group by에 e.enrolled_id만 쓰고 e.user_id를 빼도 동일한 결과가 출력됩니다.
이 경우, e.user_id는 group by를 안해줘도 되는 건지, 아니면 원리원칙상 group by를 해주는 게 맞는 건지 궁금합니다.
select e.enrolled_id,
e.user_id,
count(*) as cnt
from enrolleds e
left join enrolleds_detail ed on e.enrolled_id = ed.enrolled_id
where ed.done = 1
group by e.enrolled_id
order by cnt desc
