微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编写查找余额查询

如何解决编写查找余额查询

对于客户名为 Alexander Felix 的每个帐户,计算余额,并返回一个显示每个帐户的帐号、类型和余额的表(提示:使用 UNION)。

DROP DATABASE IF EXISTS Bank;
CREATE DATABASE Bank;
USE Bank;

DROP TABLE IF EXISTS transaction;
DROP TABLE IF EXISTS customer;
DROP TABLE IF EXISTS account;


CREATE TABLE customer (
name VARCHAR(20),sex CHAR(1),ssn CHAR(9) NOT NULL,phone CHAR(15),dob DATE,address VARCHAR(50),PRIMARY KEY(ssn)

);
  
CREATE TABLE account (
number CHAR(16) UNIQUE NOT NULL,open_date DATE,type CHAR(20),owner_ssn CHAR(9) NOT NULL,PRIMARY KEY(number)
);
  
CREATE TABLE transaction (
id INT(20) UNIQUE NOT NULL,amount DECIMAL(9,2),tdate DATE,type CHAR(10),account_num CHAR(16),PRIMARY KEY(id)
);


INSERT INTO customer VALUE ('John Adam','M','512432341','(438) 321-2553','1987-11-15',NULL);
INSERT INTO customer VALUE ('Alexander Felix','724432341','(541) 321-8553','1991-05-22',NULL);
INSERT INTO customer VALUE ('Andrew William','861894272','(308) 692-1110','1995-01-04',NULL);
INSERT INTO customer VALUE ('Ana Bert','F','844192241','(203) 932-7000','1982-12-07','23 Boston Post Rd,West Haven,CT 06516');

INSERT INTO account VALUE ('1111222233331441','2018-12-03','Checking','861894272');
INSERT INTO account VALUE ('2111222233332442','2019-01-06','Saving','512432341');
INSERT INTO account VALUE ('3111222233333443','2017-09-22','844192241');
INSERT INTO account VALUE ('4111222233335444','2016-04-11','724432341');
INSERT INTO account VALUE ('5111222233339445','2018-11-05','724432341');
INSERT INTO transaction VALUE (1001,202.50,'2019-08-15','Deposit','5111222233339445');
INSERT INTO transaction VALUE (1002,100.00,'2019-09-21','2111222233332442');
INSERT INTO transaction VALUE (1003,200.00,'2019-09-29','2111222233332442');
INSERT INTO transaction VALUE (1004,50.00,'2111222233332442');
INSERT INTO transaction VALUE (1005,1000.00,'3111222233333443');
INSERT INTO transaction VALUE (1006,-202.50,'2019-08-29','Withdraw','5111222233339445');
INSERT INTO transaction VALUE (1007,'2111222233332442');
INSERT INTO transaction VALUE (1008,'2111222233332442');
INSERT INTO transaction VALUE (1009,-10.00,'2019-09-26','2111222233332442');
INSERT INTO transaction VALUE (1010,'4111222233335444');
INSERT INTO transaction VALUE (1011,320.00,'5111222233339445');
INSERT INTO transaction VALUE (1012,'2019-09-18','4111222233335444');
INSERT INTO transaction VALUE (1013,5000.00,'2019-06-21','1111222233331441');
INSERT INTO transaction VALUE (1014,-100.00,'2019-09-02','1111222233331441');
INSERT INTO transaction VALUE (1015,-200.00,'2019-09-08','1111222233331441');

这是我目前所拥有的:

select number,type,Balance 
from account inner join  
(select account_num,sum(amount) 
as Balance from transaction
where customer.name = 'Alexander Felix');

我非常感谢有关后续步骤以及如何准确计算余额的指导。非常感谢您的任何帮助/评论

解决方法

试试

    <Flex paddingX="1.5rem" direction="column">
            <Message username="User A" body="Test Message 1" time="13:39" />
            <Message username="User B" body="Test Message 2" time="13:40" />
            <Message username="User A" body="Test Message 1" time="13:39" />
            <Message username="User B" body="Test Message 2" time="13:40" />
    </Flex>
,

喜欢吗?

select a.number,a.type,b.Balance,c.name from account as a 
join (select account_num,sum(amount) as Balance from transaction group by account_num) as b on a.number = b.account_num
join (select name,ssn from customer) c on c.ssn = a.owner_ssn
where c.name = 'Alexander Felix';
,

我同意 UNION 在这里完全没有必要,但您可以按照以下方式使用它:

SELECT number,type,SUM(amount) balance
  FROM 
     ( SELECT a.number,t.amount 
         FROM account a 
         JOIN transaction t 
           ON t.account_num = a.number 
         JOIN customer c 
           ON c.ssn = owner_ssn 
        WHERE c.name = 'Alexander Felix' 
          AND t.type = 'Deposit'
        UNION ALL
       SELECT a.number,t.amount
         FROM account a 
         JOIN transaction t 
           ON t.account_num = a.number 
         JOIN customer c 
           ON c.ssn = owner_ssn 
        WHERE c.name = 'Alexander Felix' 
          AND t.type = 'Withdraw' 
     ) x
 GROUP 
    BY number,type;

这里没有 UNION 也是一样...

SELECT a.number,SUM(amount) balance
  FROM account a 
  JOIN transaction t 
    ON t.account_num = a.number 
  JOIN customer c 
    ON c.ssn = owner_ssn 
 WHERE c.name = 'Alexander Felix'
 GROUP
    BY a.number,a.type;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。