반응형
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연습문제
- 다항회귀
- 코딩
- 오늘도코드잇
- 코드잇 TIL
- 나혼자코딩
- 데이터분석
- 결정트리
- 코딩공부
- Seaborn
- 머신러닝
- numpy
- SQL
- for반복문
- HTML
- 코드잇TIL
- 코드잇
- 메소드
- 윈도우함수
- 경사하강법
- 로지스틱회귀
- 서브쿼리
- 선형회귀
- 판다스
- 파이썬
- pandas
- 행렬
- CSS
- matplotlib
- 코딩독학
Archives
- Today
- Total
Coding Diary.
(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
반응형
'Coding > 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 |