LETCODE_001587_银行账户概要 II

-- 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 评论

留下您的评论.