1587-银行账户概要 Ⅱ
银行账户概要 II
- 题目如下所示
个人题解
这题很简单,考察的是SUM
函数的用法,如以下所示
-
-- 1. 建表 -- 该表每一行包含银行里每一个用户的账号 CREATE TABLE 1587_Users( account INT, name VARCHAR(20), PRIMARY KEY(account) ); -- 该表每一行包含了所有账户的交易改变情况 -- 用户收到钱,金额为正,反之为负,所有账户起始余额为0 CREATE TABLE 1587_Transactions( trans_id INT, account INT, amount INT, transacted_on DATE, PRIMARY KEY(trans_id) ); -- 2. 查询余额高于 10000 的所有用户的名字和余额。账户的余额等于包含该账户的搜友交易的总和 SELECT u.account, SUM(t.amount) FROM 1587_Users u, 1587_Transactions t WHERE u.account = t.account GROUP BY u.account; SELECT u.name, SUM(t.amount) balance FROM 1587_Users u, 1587_Transactions t WHERE u.account = t.account GROUP BY u.account HAVING SUM(t.amount) > 10000; -- PS: 这里必须对主键进行分组,否则如果对 name 进行分组的话,name 是可以有重名的情况的。主键则表名其是唯一值