LeetCode 1193 해결 방법
발행: (2026년 1월 16일 오전 05:45 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
문제 설명
테이블 Transactions는 다음과 같은 컬럼을 가지고 있습니다:
id(primary key)countrystate(열거형:'approved'또는'declined')amounttrans_date
각 월‑년 및 국가별로 다음과 같은 집계값을 반환해야 합니다(정렬 순서는 상관없음):
month–YYYY-MM형식으로 포맷된 값trans_count– 전체 거래 수approved_count– 승인된 거래 수trans_total_amount– 모든 거래 금액의 합계approved_total_amount– 승인된 거래 금액의 합계
접근 방법
- 그룹화 –
trans_date에서 추출한 월‑년과country를 기준으로 행을 그룹화합니다. - 집계 –
COUNT(id)는 전체 거래 수를 제공합니다.SUM(amount)는 전체 거래 금액을 제공합니다.- 승인된 거래에 대한 지표는
SUM안에CASE표현식을 사용합니다:state = 'approved'인 경우1(또는amount)을 반환하고, 그렇지 않으면0을 반환합니다.
- 월 포맷 – PostgreSQL에서는
TO_CHAR(trans_date, 'YYYY-MM')를 사용해 날짜를YYYY-MM문자열로 변환합니다.
SQL 쿼리
SELECT
TO_CHAR(trans_date, 'YYYY-MM') AS month,
country AS 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 TO_CHAR(trans_date, 'YYYY-MM'), country;