返回介绍

solution / 1500-1599 / 1587.Bank Account Summary II / README

发布于 2024-06-17 01:03:17 字数 2731 浏览 0 评论 0 收藏 0

1587. 银行账户概要 II

English Version

题目描述

表: Users

+--------------+---------+
| Column Name  | Type  |
+--------------+---------+
| account    | int   |
| name     | varchar |
+--------------+---------+
account 是该表的主键(具有唯一值的列)。
该表的每一行都包含银行中每个用户的帐号。
表中不会有两个用户具有相同的名称。

 

表: Transactions

+---------------+---------+
| Column Name   | Type  |
+---------------+---------+
| trans_id    | int   |
| account     | int   |
| amount    | int   |
| transacted_on | date  |
+---------------+---------+
trans_id 是该表主键(具有唯一值的列)。
该表的每一行包含了所有账户的交易改变情况。
如果用户收到了钱, 那么金额是正的; 如果用户转了钱, 那么金额是负的。
所有账户的起始余额为 0。

 

编写解决方案,  报告余额高于 10000 的所有用户的名字和余额. 账户的余额等于包含该账户的所有交易的总和。

返回结果表单 无顺序要求

查询结果格式如下例所示。

 

示例 1:

输入:
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   |
+------------+------------+------------+---------------+
输出:
+------------+------------+
| name     | balance    |
+------------+------------+
| Alice    | 11000    |
+------------+------------+
解释:
Alice 的余额为(7000 + 7000 - 3000) = 11000.
Bob 的余额为1000.
Charlie 的余额为(6000 + 6000 - 4000) = 8000.

解法

方法一:等值连接 + 分组求和

我们可以使用等值连接,将 UsersTransactions 表按照 account 列连接起来,然后按照 account 列分组求和,最后筛选出余额大于 $10000$ 的用户。

# Write your MySQL query statement below
SELECT
  name,
  SUM(amount) AS balance
FROM
  Users
  JOIN Transactions USING (account)
GROUP BY account
HAVING balance > 10000;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文