TIL

김재익·2023년 6월 14일
0

TIL

목록 보기
8/42
post-thumbnail

SQL 4주차 강의 나머지 정리

  • SUBSTRING과 CASE 학습
  • 실전 예제 실습
  • 복습(예제)과정 실습
  • 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
profile
개발자호소인

0개의 댓글