커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
4-10 강의 퀴즈에서 질문 있습니다.
[왕초보] 엑셀보다 쉬운, SQL v3
4주차
북마크
박*정
댓글
3
추천
0
조회수
10
조회수
10
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


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을 사용해도 되는건가요? 제가 이해한 게 맞는지 헷갈립니다...🥲








취소
 공유
취소
댓글 0
댓글 알림
나의얼굴