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
- 데이터분석
- 활성사용자수
- 셀프조인
- 데벨챌
- 파이썬
- 코테후기
- 위키독스
- 데이터리안실전반
- levle1
- SQL고득점KIT
- leetcode문풀
- leetcode
- 그로스해킹
- 데이터리안
- 티스토리챌린지
- 데이터리안넥스트레벨챌린지
- sql50
- SQL
- 프로그래머스
- 문풀
- with절
- 시간함수
- 코테준비
- 오블완
- 파이썬문풀
- join
- 서브쿼리
- 프로그래머스문풀
- mysql
- sql문풀
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[MY SQL] 전체 거래수와 금액, 승인된 거래수와 금액 같이 조회하기 본문
728x90
출처: [Leetcode - SQL50] : 1193. Monthly Transactions
문제(일부): 월별, 나라별로 거래수와 거래금액, 승인된 거래수와 거래금액
1. CASE WHEN구문 활용
0) 월별 나라별로 거래수와 거래금액, "승인된"필터링 조건의 거래수와 거래금액을 같이 조회해야 함
1) 월별, 나라별로 보기 위해 group by를 사용
2) 전체 거래수와 거래금액은 집계함수를 사용
3) CASE WHEN구문으로 승인된 거래수와 거래금액을 각각 조회하는 컬럼 생성
=> 거래수를 계산할 때
SUM(CASE WHEN state = 'approved' THEN 1 ELSE 0 END) AS 'approved_count' 사용
=> 가장 처리속도가 빠른 답 확인 시
COUNT(CASE WHEN STATE ='APPROVED' THEN 1 ELSE NULL END) AS 'approved_count' 사용
=> SUM은 계산하는데 시간이 더 많이 사용되고, COUNT와 NULL을 사용하여 처리속도가 빨라짐
SELECT DATE_FORMAT(trans_date,'%Y-%m') AS month
,country
,COUNT(id) AS trans_count
,COUNT(CASE WHEN STATE ='APPROVED' THEN 1 ELSE NULL END) AS 'approved_count'
-- ,SUM(CASE WHEN state = 'approved' THEN 1 ELSE 0 END) AS 'approved_count'
,SUM(amount) AS trans_total_amount
,SUM(CASE WHEN state = 'approved' THEN amount ELSE 0 END) AS 'approved_total_amount'
FROM Transactions
GROUP BY country, month
728x90