1193. Monthly Transactions I(LeetCode)

minllny·2024년 5월 2일


여러분 풀었는데요..

런타임이 너무 긴 거 있죠.. ㅋㅋㅋ

일단 저의 답 쿼리는!

SELECT DATE_FORMAT(trans_date, "%Y-%m") month
     , country 
     , COUNT(*) trans_count
     , SUM(CASE WHEN state = "approved" THEN 1 ELSE 0 END) approved_count
     , SUM(amount) trans_total_amount
     , SUM(CASE WHEN state = "approved" THEN amount ELSE 0 END) approved_total_amount
FROM Transactions
GROUP BY country, DATE_FORMAT(trans_date, "%Y-%m")

가장 단순한 쿼리인 것 같은데 다른 사람들의 쿼리도 봅시다!

SELECT  SUBSTR(trans_date,1,7) as month
        , country
        , count(id) 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

비슷한 구조인데 런타임이 훨씬 짧아요.
코테를 잠깐 안하고 있다가 다시 하려니까 좀 까먹었네요 ㅎ
group by에는 select절의 컬럼명을 써도 된다는 점!!!
수정해서 실행시키니까 훨씬 짧아지긴 했어요 !!


그리고 date_format()보다 SUBSTR()이 훨씬 빠른가봐요.
date형식이니까 SUBSTR()를 사용하지 못할 거라고 생각했는데...!
가능한가봐욥 ? 🤔🫢

profile
SQL 끄적끄적

0개의 댓글