카테고리 없음
[MY SQL] 전체 거래수와 금액, 승인된 거래수와 금액 같이 조회하기
data_2080
2024. 8. 8. 16:34
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