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


지금 4분 45초 시점에서 구하려고 하는 것은 course_id별 like 개수에 전체 인원을 붙이는 거잖아요?

그런데 4분 45초 시점 이전까지.. 구한 것은 course_id별로 한 번이라도 체크인을 한 유저 id의 수(그러니까 체크인 수)고

준비 2는 course_id별로 전체 인원이었습니다.

그러니까 제가 이해가 안되는 것은 course_id별 like개수 != course_id별 체크인 수 인데 ㅠㅠㅠ 왜 이 둘을 바로 join을 해버리는 걸까요..?



스파르타 즉문즉답





작성한 코드 및 에러 메세지

-- [준비1]
-- course_id별
-- 유저의 체크인 개수 (한 번이라도 체크인을 한 유저 id의 수 세기)
SELECT course_id, count(DISTINCT(user_id)) as cnt_checkins FROM checkins
GROUP BY course_id




-- [준비2]
-- course_id별
-- 인원을 구해보기 (결제정보인 orders 테이블의 order_no을 써먹자!)
SELECT course_id, count(order_no) as cnt_total FROM orders
GROUP BY course_id




-- [진짜 하고 싶은 것] course_id별 like 개수에 전체 인원을 붙이기 <--???? 왜 준비1과 준비2를 바로 join해버리지
select a.course_id, b.cnt_checkins, a.cnt_total from
(
	select course_id, count(*) as cnt_total from orders
	group by course_id
) a
inner join (
	select course_id, count(distinct(user_id)) as cnt_checkins from checkins
	group by course_id
) b
on a.course_id = b.course_id


Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!




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