-- 1587. 银行账户概要 II
-- 表: 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.
--
--
--
-- 写一个 SQL, 报告余额高于 10000 的所有用户的名字和余额. 账户的余额等于包含该账户的所有交易的总和.
--
-- 返回结果表单没有顺序要求.
--
-- 查询结果格式如下例所示.
--
--
--
-- 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 |
-- +------------+------------+------------+---------------+
--
-- Result table:
-- +------------+------------+
-- | name | balance |
-- +------------+------------+
-- | Alice | 11000 |
-- +------------+------------+
-- Alice 的余额为(7000 + 7000 - 3000) = 11000.
-- Bob 的余额为1000.
-- Charlie 的余额为(6000 + 6000 - 4000) = 8000.
--
-- 来源:力扣(LeetCode)
-- 链接:https://leetcode.cn/problems/bank-account-summary-ii
-- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-- DROP TABLE IF EXISTS Users;
-- CREATE TABLE Users (
-- account int COMMENT '账户',
-- name VARCHAR(64) COMMENT '姓名',
-- PRIMARY KEY (`account`)
-- )
-- ENGINE=InnoDB
-- DEFAULT CHARSET=utf8mb4
-- COLLATE=utf8mb4_unicode_ci
-- COMMENT='用户表'
-- ;
-- DROP TABLE IF EXISTS Transactions;
-- CREATE TABLE Transactions (
-- trans_id int COMMENT '交易号',
-- account int COMMENT '交易账户',
-- amount int COMMENT '交易金额',
-- transacted_on date COMMENT '交易日期'
-- )
-- ENGINE=InnoDB
-- DEFAULT CHARSET=utf8mb4
-- COLLATE=utf8mb4_unicode_ci
-- COMMENT='销售表'
-- ;
-- INSERT INTO Users
-- (account, name)
-- VALUES
-- (900001, 'Alice')
-- ,(900002, 'Bob')
-- ,(900003, 'Charlie')
-- ;
-- INSERT INTO Transactions
-- (trans_id, account, amount, transacted_on)
-- VALUES
-- (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')
-- ;SELECT u.name,T.balance
FROM Users u,(SELECT account,SUM(amount) AS balanceFROM TransactionsGROUP BY accountORDER BY balance DESC) T
WHERE u.account = T.accountAND T.balance > 10000
;
本文链接:https://my.lmcjl.com/post/6967.html
展开阅读全文
4 评论