-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1587-BankAccountSummaryII.sql
More file actions
89 lines (87 loc) · 3.77 KB
/
1587-BankAccountSummaryII.sql
File metadata and controls
89 lines (87 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
-- 1587. Bank Account Summary II
-- Table: Users
-- +--------------+---------+
-- | Column Name | Type |
-- +--------------+---------+
-- | account | int |
-- | name | varchar |
-- +--------------+---------+
-- account is the primary key for this table.
-- Each row of this table contains the account number of each user in the bank.
--
-- Table: Transactions
-- +---------------+---------+
-- | Column Name | Type |
-- +---------------+---------+
-- | trans_id | int |
-- | account | int |
-- | amount | int |
-- | transacted_on | date |
-- +---------------+---------+
-- trans_id is the primary key for this table.
-- Each row of this table contains all changes made to all accounts.
-- amount is positive if the user received money and negative if they transferred money.
-- All accounts start with a balance of 0.
--
-- Write an SQL query to report the name and balance of users with a balance higher than 10000.
-- The balance of an account is equal to the sum of the amounts of all transactions involving that account.
-- Return the result table in any order.
-- The query result format is in the following example.
--
-- Example 1:
--
-- Input:
-- Users table:
-- +------------+--------------+
-- | account | name |
-- +------------+--------------+
-- | 900001 | Alice |
-- | 900002 | Bob |
-- | 900003 | Charlie |
-- +------------+--------------+
-- Transactions table:
-- +------------+------------+------------+---------------+
-- | trans_id | account | amount | transacted_on |
-- +------------+------------+------------+---------------+
-- | 1 | 900001 | 7000 | 2020-08-01 |
-- | 2 | 900001 | 7000 | 2020-09-01 |
-- | 3 | 900001 | -3000 | 2020-09-02 |
-- | 4 | 900002 | 1000 | 2020-09-12 |
-- | 5 | 900003 | 6000 | 2020-08-07 |
-- | 6 | 900003 | 6000 | 2020-09-07 |
-- | 7 | 900003 | -4000 | 2020-09-11 |
-- +------------+------------+------------+---------------+
-- Output:
-- +------------+------------+
-- | name | balance |
-- +------------+------------+
-- | Alice | 11000 |
-- +------------+------------+
-- Explanation:
-- Alice's balance is (7000 + 7000 - 3000) = 11000.
-- Bob's balance is 1000.
-- Charlie's balance is (6000 + 6000 - 4000) = 8000.
-- Create table If Not Exists Users (account int, name varchar(20))
-- Create table If Not Exists Transactions (trans_id int, account int, amount int, transacted_on date)
-- Truncate table Users
-- insert into Users (account, name) values ('900001', 'Alice')
-- insert into Users (account, name) values ('900002', 'Bob')
-- insert into Users (account, name) values ('900003', 'Charlie')
-- Truncate table Transactions
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('1', '900001', '7000', '2020-08-01')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('2', '900001', '7000', '2020-09-01')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('3', '900001', '-3000', '2020-09-02')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('4', '900002', '1000', '2020-09-12')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('5', '900003', '6000', '2020-08-07')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('6', '900003', '6000', '2020-09-07')
-- insert into Transactions (trans_id, account, amount, transacted_on) values ('7', '900003', '-4000', '2020-09-11')
SELECT
u.name AS name,
SUM(t.amount) AS balance
FROM
Users AS u,
Transactions AS t
WHERE
u.account = t.account
GROUP BY u.name
HAVING balance > 10000