
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
숙제: enrolled_id별 수강완료(done=1)한 강의 갯수를 세어보고, 완료한 강의 수가 많은 순서대로 정렬해보기. user_id도 같이 출력되어야 한다.
이 문제였는데, enrolled_id와 user_id는 group by 로 select 해보니 각 한 개씩 고유값을 가지고 있는 것을 알 수 있습니다.
굳이 group by를 안 하고, where done = 1 조건을 충족하는 데이터만 개수를 세어도 같은 결과를 얻을 수 있을 것 같은데,
enrolled_id와 user_id 를 각각 아래 정답 코드처럼 group by 하는 이유가 무엇인가요?
정답 코드
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
