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 |
Tags
- 프로그래머스문풀
- 문풀
- SQL고득점KIT
- 셀프조인
- UNION
- levle1
- 서브쿼리
- 약수구하기
- leetcode문풀
- leetcodesql50
- SQL테스트
- 리트코드sql
- 코딩테스트
- 활성사용자수
- 프로그래머스
- with절
- 위키독스
- 윈도우함수
- 데이터리안
- SQL
- sql문풀
- mysql
- 파이썬
- join
- leetcode
- With
- 코테
- 데이터분석
- GROUPBY
- 파이썬문풀
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