
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
with table1 as (
SELECT enrolled_id, COUNT(*) as cnt_tot
FROM enrolleds_detail ed
GROUP BY enrolled_id
),
table2 as (
SELECT enrolled_id, COUNT(*) as cnt_done
FROM enrolleds_detail ed
WHERE done = '1'
GROUP BY enrolled_id
)
SELECT a.enrolled_id,
cnt_done,
cnt_tot,
ROUND((cnt_done/cnt_tot),2) as ratio
FROM table1 a
INNER JOIN table2 b
ON a.enrolled_id = b.enrolled_id;
select enrolled_id,
sum(done) as cnt_done,
count(*) as cnt_total
from enrolleds_detail ed
group by enrolled_id
<수강등록정보(enrolled_id)별 전체 강의 수와 들은 강의의 수, 그리고 진도율 출력해보기> 에서 서브쿼리를 이용하지 않고 sum(done)을 이용해서 훨씬 간단하게 작성하는 법이 나왔는데요.
sum을 이용할 수 있었던 이유가 done의 값이 1과 0으로만 이루어져 있어서 그런 것인가요?
들은 강의는 done=1이니까 sum(done)을 쓰면 done의 합계가 나올테니, 만약 들은 강의가 3개라고 하면 1+1+1이니까 합계는 3이 되어서 사용할 수 있는 것인가요? 다른 값이었으면 1과 0 이외에 다른 숫자가 있어도 sum을 사용해도 되는건가요? 제가 이해한 게 맞는지 헷갈립니다...🥲
