SQL 4주차 강의 나머지 정리
SQL (4)++
https://velog.io/@kin5080/SQL-4-38mf41xh
조금 어려웠던 예제
enrolled_id 별 수강완료자와 현재수강자의 수와 비율 조회
with donetable as(
SELECT ed2.enrolled_id, COUNT(*) as done_cnt FROM enrolleds_detail ed2
WHERE ed2.done = 1
GROUP BY enrolled_id
), totaltable as(
SELECT ed3.enrolled_id, COUNT(*) as total_cnt FROM enrolleds_detail ed3
GROUP BY enrolled_id
)
SELECT ed1.enrolled_id,
d.done_cnt,
t.total_cnt,
ROUND((d.done_cnt/t.total_cnt), 2) as ratio
FROM enrolleds_detail ed1
INNER JOIN donetable d on d.enrolled_id = ed1.enrolled_id
INNER JOIN totaltable t on t.enrolled_id = ed1.enrolled_id
GROUP BY ed1.enrolled_id
장염걸려서 어제 못했던 sql만 정리하고 쉬었다.
나머지 부분이라고 하지만 기술적인 면에서 꼭 정리해야 할 내용들이어서 했다가 쉬었다가 반복하면서 다 했다.
마지막에 어려운 예제를 짧게 줄이는걸 보여주셨는데 굉장히 짜릿했다.
done의 값이 0 아니면 1인 것을 이용함.
SELECT enrolled_id,
SUM(done) as done_cnt,
COUNT(*) as total_cnt,
ROUND(SUM(done)/COUNT(*), 2) as ratio
FROM enrolleds_detail ed
GROUP BY enrolled_id