我正在研究这个问题,非常感谢您的帮助!
Question in detail
我将在这里粘贴查询以创建表并在其中添加记录。这样可能更容易测试。
CREATE TABLE user_financial_detail(
id INT PRIMARY KEY,
first_name varchar(20),
last_name varchar(20),
vpa VARCHAR(20),
credit_limit int
);
CREATE TABLE transaction_log(
id INT PRIMARY KEY,
paid_by VARCHAR(20),
paid_to VARCHAR(20),
amount INT,
transacted_on TIMESTAMP
);
INSERT INTO user_financial_detail VALUES
(1,'shea','caldwell','sc',5000),
(2,'martena','leblanc','ml',10000),
(3,'tashya','riley','tr',25000);
INSERT INTO transaction_log VALUES
(1,'ml','tr',13155,'2019/11/21'),
(2,'tr','ml',10883,'2019/09/10'),
(3,'sc','tr',15012,'2018/12/25'),
(4,'ml','sc',5700,'2018/05/18'),
(5,'tr','sc',18473,'2018/07/02');
3条答案
按热度按时间bogh5gae1#
首先,为每个用户找到平衡:
然后将此结果与
user_financial_detail
连接以获取其余数据:结果:
sxpgvts32#
SELECT串接(u.名字,',u.姓氏)名称,
B.VPA,
B.当前余额,
箱型
WHEN B.当前余额〈0
AND
Abs
(B.当前余额)〉u.credit_限制,则选择“是”否则“否”
结束 违反信用限额
自 用户财务详细信息u
内部联接(选择vpa、
Sum
(总额)当前余额自 (SELECT付款人 VPA,
Sum
(-金额)合计金额自 事务日志
GROUP BY付款人
所有接头
SELECT收款方 VPA,
Sum
(金额)合计_金额自 事务日志
GROUP BY收款方)bi
分组依据vpa)b
ON B.vpa = u.vpa;
qc6wkl3g3#
信用额为(选择a.vpa,sum(B.amount)作为信用额,来自user_financial_detail作为内部连接交易日志作为b on a.vpa=b.paid_to group by a.vpa)
,借记为(选择A.VPA,SUM(B.金额)作为借记,从user_financial_detail作为内部连接交易日志作为B on A.VPA=B.paid_by Group by A.VPA)
选择a.vpa,(B.贷方-c.借方),当(b.贷方-c.借方)〈0时,则“是”,否则“否”作为内部连接从user_financial_detail结束贷方作为b on a.vpa=b.vpa内部连接借方作为c on a.vpa=c.vpa;