본문 바로가기

Week I Learned

[SQL]스파르타코딩클럽3-3,4 본격 쿼리 작성해보기 스터디노트

퀴즈풀기

1. 결제 수단 유저 포인트의 평균값 구해보기 (어느 결제수단이 가장 열심히 듣고 있나~)

join 할 테이블: point_users 에, orders 를 붙이기

 

~별 이 나로면 그걸 기준으로 group by 한다고 생각하기!(즉 group by 결제수단)

 

내가 풀은 답

select o.payment_method, round(avg(pu.point),0) as avg_point  from point_users pu 
inner join orders o on pu.user_id = o.user_id 
group by o.payment_method

결과

이해 완료!


2. 결제하고 시작하지 않은 유저들을 성씨별로 세어보기 (어느 성이 가장 시작을 안하였는가~)

join 할 테이블: enrolleds 에, users 를 붙이기

꿀팁! → is_registered = 0 인 사람들을 세어보아요!

꿀팁! → order by 를 이용해서 내림차순으로 정렬하면 보기 좋겠죠?

 

내가 풀은 답

SELECT u.name, count(*) as not_start FROM enrolleds e 
inner join users u on e.user_id = u.user_id 
where e.is_registered = 0
group by u.name 
order by not_start desc

결과

 

답이 원하는대로 잘 나오니 재미가 있고만..ㅎㅎ


3. 과목 별로 시작하지 않은 유저들을 세어보기

join 할 테이블: courses에, enrolleds 를 붙이기

꿀팁! → is_registered = 0 인 사람들을 세어보아요!

 

내가 풀은 답

SELECT c.title, count(*) as cnt_notyetstart FROM courses c 
inner join enrolleds e on c.course_id = e.course_id 
WHERE e.is_registered = 0
group by c.title

결과

 

무난히 정답~

 


4. 웹개발, 앱개발 종합반의 week 별 체크인 수를 세어볼까요? 보기 좋게 정리해보기!

join 할 테이블: courses에, checkins 를 붙이기

꿀팁! → group by, order by에 콤마로 이어서 두 개 필드를 걸어보세요!

 

내가 풀은 답

SELECT title, week, count(*) as cnt_checkin from courses c 
inner join checkins c2 on c.course_id = c2.course_id 
group by title, week
order by title

결과

 

group by 에 콤마로 두가지 조건을 주는게 포인트.

 

group by 할 때 나는 title과 week를 그냥 썼는데

어느 테이블에 있는 title 과 week인지 붙여주는 습관을 들이는 것이 좋을 듯.

 


5. 연습4번에서, 8월 1일 이후에 구매한 고객들만 발라내어 보세요!

join 할 테이블: courses에, checkins 를 붙이고! + checkins 에, orders 를 한번 더 붙이기!

 

.. 발라내어 보란 말이 무슨 뜻인지?ㅎㅎ

 

두번조인하는 방법은 한번 더 쓰면 됨.

 

정답 : 

select c1.title, c2.week, count(*) as cnt from courses c1
inner join checkins c2 on c1.course_id = c2.course_id
inner join orders o on c2.user_id = o.user_id
where o.created_at >= '2020-08-01'
group by c1.title, c2.week
order by c1.title, c2.week

 

날짜를 조건에 넣을 때 ' ' (따옴표)안에 넣는다~

 

모로가도 데이터만 나오면 된다~

정답이 하나가 아니라고 알려주시니 더 이리저리 해볼 마음이 생기는 듯. 감사합니다~