홍동이의 성장일기
[LeetCode] 1193. Monthly Transactions I (Date_format 날짜 함수) 본문
Tool/SQL 코딩테스트 풀이
[LeetCode] 1193. Monthly Transactions I (Date_format 날짜 함수)
홍동2 2023. 12. 24. 11:33
SELECT DATE_FORMAT(trans_date, '%Y-%m') as month
, country
, COUNT(*) as trans_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 month, country
💡 문제 풀이
이번 문제는 문제에서 원하는 'trans'가 무엇인지 파악하기 어려웠다. 그래서 예제를 순서대로 구현해나가면서 문제를 해결했다.
1️⃣ 먼저 date_format 함수를 이용해서 년-월만 뽑아주고 country를 가져온다. month와 country 둘 중 하나로만 group by를 하려고 하면 우리가 원하는 형태가 나오지 않는다. 월별로 group을 지어준 후, 그 안에서 country가 다른 경우는 또 따로 group을 지어주어야 하기 때문이다.
2️⃣ trans_count와 trans_total_amount는 비교적 간단하게 해결이 가능하다.
approved_~에 대해서는 별도의 조건 지정이 필요하다. CASE 구문을 사용하여 state가 approved인 조건을 지정해주고 필요한 집계를 해주면된다.
크게 어려운 문제는 아니지만 오랜만에 날짜 함수를 사용해서 글을 작성해보았다.
MYSQL 날짜 함수 참고하면 좋은 글
728x90
'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글
[LeetCode] 1341. Movie Rating (Union vs. Union All) (2) | 2024.01.03 |
---|---|
[LeetCode] 1204. Last Person to Fit in the Bus (누적합계 구하기) (1) | 2023.12.30 |
[LeetCode] 1174. Immediate Food Delivery II (집계함수에 조건 작성하기) (0) | 2023.12.22 |
[LeetCode] 1164. Product Price at a Given Date (조건에 따라 다른 값 부여하기) (0) | 2023.12.20 |
[LeetCode] 1158. Market Analysis I (JOIN에 AND 조건 사용하기) (0) | 2023.12.19 |
Comments