반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드잇
- 파이썬
- 로지스틱회귀
- sql연습문제
- Seaborn
- for반복문
- 코드잇 TIL
- 머신러닝
- matplotlib
- 런던
- 데이터분석
- 오늘도코드잇
- 유학생
- 윈도우함수
- 결정트리
- 행렬
- 선형회귀
- 코딩독학
- 영국석사
- 코딩공부
- 코드잇TIL
- 코딩
- CSS
- 경사하강법
- 나혼자코딩
- HTML
- SQL
- 다항회귀
- numpy
- 판다스
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(SQL) 서브쿼리 연습문제 및 풀이 본문
728x90
반응형
1. 문제
- 각 계정에서 제품을 마케팅하는 데 가장 많이 사용한 (최댓값) 채널은 무엇입니까?
- 같은 채널이 얼마나 자주 사용되었습니까?
1) channel과 각 channel이 발생환 횟수 파악하기
SELECT a.id, a.name, we.channel, COUNT(*) ct
FROM accounts a
JOIN web_events we
ON a.id = we.account_id
GROUP BY a.id, a.name, we.channel
ORDER BY a.id;
2) 위의 서브쿼리를 t1으로 하고 계정 이름별 채널 집계치의 최댓값 구하기
SELECT t1.id, t1.name, MAX(ct)
FROM (SELECT a.id, a.name, we.channel, COUNT(*) ct
FROM accounts a
JOIN web_events we
ON a.id = we.account_id
GROUP BY a.id, a.name, we.channel) t1
GROUP BY t1.id, t1.name
3) 최댓값과 계정 이름(t2) 을 원래 테이블(t3)과 연결하기 (ct와 max가 일치하는 테이블 반환)
SELECT t3.id, t3.name, t3.channel, t3.ct
FROM (SELECT a.id, a.name, we.channel, COUNT(*) ct
FROM accounts a
JOIN web_events we
ON a.id = we.account_id
GROUP BY a.id, a.name, we.channel) t3
JOIN (SELECT t1.id, t1.name, MAX(ct) max_chan
FROM (SELECT a.id, a.name, we.channel, COUNT(*) ct
FROM accounts a
JOIN web_events we
ON a.id = we.account_id
GROUP BY a.id, a.name, we.channel) t1
GROUP BY t1.id, t1.name) t2
ON t2.id = t3.id AND t2.max_chan = t3.ct
ORDER BY t3.id;
728x90
반응형
'코딩공부 > SQL' 카테고리의 다른 글
(SQL) WITH 서브쿼리 연습문제 (0) | 2024.05.23 |
---|---|
(SQL) 서브쿼리 연습문제 및 풀이모음 (0) | 2024.05.17 |
(SQL) 서브쿼리 개념, 종류 및 예시 (0) | 2024.05.16 |
(SQL) CASE 문 개념 및 연습문제 (0) | 2024.05.13 |
(SQL) DATE_TRUNC DATE_PART 개념 및 연습문제 (0) | 2024.05.13 |