我正在尝试合并三个表以确定最富有的人,看看谁的钱少于一半。
3个表是:
Persons (id, name)
BankAccounts(id,balance)
AccountOf(id,person_id → Persons,account_id → BankAccounts)
在每个表中id唯一的地方
问题是: 编写一个查询,该查询返回财富少于最富有者一半的所有人的名字。我们将一个人的财富定义为他/她所有帐户上的总金额。
我被困在这里。到目前为止,我已经知道了:
SELECT P1.name, SUM(B.balance) as b
FROM Persons P1
LEFT JOIN AccountOf A1
ON A1.person_id = P1.id
LEFT JOIN BankAccounts B
ON B.id = A1.account_id
GROUP BY name
给出每个名字以及他们所有账户余额的总和。但是之后,我无法使用WHERE来确定
SUM(b) < 0.5 * MAX(b)
一无所有的人也应该算作穷人。而且我只想创建一个名称表,后面没有余额。
答案 0 :(得分:0)
great_magicians