📝 1587. Bank Account Summary 2
🔹 은행 계좌 요약 2
10000보다 높은 잔액을 가진 사용자의 이름과 잔액을 보고하는 솔루션을 작성하세요. 계정의 잔액은 해당 계정과 관련된 모든 거래 금액의 합계와 같습니다.
어떤 순서로든 결과 테이블을 반환합니다.
📝 문제 설명
Bank Account Summary 2(1587번) 문제는 특정 기준에 맞는 사용자의 계좌 잔액을 조회하는 문제입니다. 각 사용자의 계좌 잔액을 계산하고 잔액이 10,000보다 높은 사용자만 조회해야 합니다. 잔액은 사용자의 모든 거래 내역(amount)의 합계로 계산됩니다.
📊 테이블 구조
Users 테이블
Column Name | Type |
account | int |
name | varchar |
Transactions 테이블
Column Name | Type |
trans_id | int |
account | int |
amount | int |
transacted_on | date |
💡 SQL 문제 해결 방법
- JOIN을 사용하여 Users 테이블과 Transactions 테이블을 연결합니다.
- SUM 함수를 사용하여 각 사용자의 총 거래 금액을 계산합니다.
- GROUP BY 절을 사용하여 사용자 계좌별로 잔액을 집계합니다.
- HAVING 절을 사용하여 잔액이 10,000보다 큰 사용자만 필터링합니다.
반응형
🖥️ SQL 풀이
SELECT a.name
, SUM(b.amount) AS balance
FROM Users a
LEFT JOIN Transactions b
ON a.account = b.account
GROUP BY a.account
HAVING SUM(b.amount) > 10000
🔍 쿼리 분석
- LEFT JOIN: 사용자의 모든 계좌 정보를 가져오기 위해 사용됩니다.
- SUM(b.amount): 사용자의 거래 내역을 합산하여 잔액을 계산합니다.
- GROUP BY a.account: 계좌 번호를 기준으로 집계합니다.
- HAVING: 잔액이 10,000보다 큰 사용자만 필터링합니다.
📌 실행 예제
📊 입력 테이블
Users 테이블
account | name |
900001 | Alice |
900002 | Bob |
900003 | Charlie |
Transactions 테이블
trans_id | account | amount | transacted_on |
1 | 90001 | 7000 | 2020-08-01 |
2 | 90001 | 7000 | 2020-09-01 |
3 | 90001 | -3000 | 2020-09-02 |
4 | 90002 | 1000 | 2020-09-12 |
5 | 90003 | 6000 | 2020-08-07 |
6 | 90003 | 6000 | 2020-09-07 |
7 | 90003 | -4000 | 2020-09-11 |
쿼리 실행 결과
name | balance |
Alice | 11000 |
- Alice의 계좌에는 7000 + 7000 - 3000 = 11000 원이 남아 있습니다
- Bob의 계좌에는 1000원이 남아 있습니다.
- Charlie의 계좌에는 6000 + 6000 - 4000 = 8000원이 남아 있습니다.
- 따라서 10000원 이상 잔액이 있는 Alice의 계좌만 출력합니다.
🎯 결론
이 문제는 JOIN 절과 집계 함수를 활용하여 거래 데이터를 집계하고, 특정 조건을 만족하는 사용자만 필터링하는 방법을 연습할 수 있습니다. SQL에서 데이터 집계와 조건 필터링을 효율적으로 처리하는 기본적인 기법을 다룹니다.
더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀
728x90
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 1693. Daily Leads and Partners (0) | 2025.03.10 |
---|---|
[LeetCode] 1667. Fix Names in a Table (0) | 2025.03.10 |
[LeetCode] 1407. Top Travellers (0) | 2025.03.06 |
[LeetCode] 1179. Reformat Department Table (0) | 2025.03.05 |
[LeetCode] 1084. Sales Analysis 3 (2) | 2025.03.05 |