이번에 배운 내용은 join, union으로 다양한 데이터 셋을 연결하여 보다 다양한 분석을 가능하게 하는 기능이다.
스파르타 코딩은 강의 시간을 여러 개로 짤라 녹화를 하기에 체감상 짧다는 느낌이 들고,
다양한 숙제 / 실습으로 구성되어 있어서 확실히 짧은 기간에 빠르게 성장하는 데에 좋은 것 같다.
아마 다음에 또 코딩 / 데이터 분석 강의를 듣는다면 스파르타 코딩에서 듣지 않을까 싶을 정도...!
SQL문 작성 팁!
1. 각 데이터들 확인하기
Select * from [테이블명1]
Select * from [테이블명2]
2. 테이블1, 2에 중복으로 들어간 범주명 찾기
ex) user_id
3. 해당 범주명을 이용하여 연결하기
ex) inner join orders o on pu.user_id = o.user
pu = payment_method
4. 그 이후 분석하는 쿼리 작성
Q1. 결제 수단 별 유저 포인트의 평균값 구해보기
select o.payment_method, round(avg(pu.`point`),0) from point_users pu
inner join orders o on pu.user_id = o.user_id
group by o.payment_method
Q2. 결제하고 시작하지 않은 유저들을 성씨별로 세어보기
select u.name, count(*) as cnt 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 cnt desc
Q3. 과목 별로 시작하지 않은 유저들을 세어보기
select c.course_id, c.title, count(*) as cnt_notstart from courses c
inner join enrolleds e on c.course_id = e.course_id
where e.is_registered = 0
group by c.course_id
Q4. 웹개발, 앱개발 종합반의 week 별 체크인 수
select c1.title, c2.week, count(*) from courses c1
inner join checkins c2 on c1.course_id = c2.course_id
group by c1.title, c2.week
order by c1. title, c2.week
Q5.
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 o.user_id = c2.user_id
where o.created_at >= '2020-08-01'
group by c1.title, c2.week
order by c1.title, c2.week
여기서 신기했던 점은 제가 user_id가 아닌 course_id로 연결하니 전혀 다른 값이 나왔답니다...!!
그 이유는 inner join에 대해 이해하면 편하신데요!
inner join은 이와 같이 교집합을 나타내기 떄문에 어떤 범주명으로 이어주냐에 따라 값이 달라진거죠...!
너무 신기하지 않나요?
역시 강의 구성 자체가 실습이 많다 보니 실수를 하면서 내용을 깨닫게 되어 정말 학습효과가 좋은 것 같습니다 ㅎㅎ
'SQL' 카테고리의 다른 글
[스타르타 코딩] 엑셀보다 쉬운 SQL 4주차 -최종 정리 및 후기- (0) | 2023.03.26 |
---|---|
[스파르타 코딩] 엑셀보다 쉬운 SQL 2주차 (0) | 2023.03.19 |
[스파르타 코딩] 엑셀보다 쉬운 SQL 1주차 (0) | 2023.03.08 |