首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写sql查询查找人的财富?

如何编写sql查询查找人的财富?
EN

Stack Overflow用户
提问于 2022-05-23 19:52:38
回答 1查看 56关注 0票数 0

我在编写一个查询时遇到了困难,该查询返回所有财富不足最富有者一半的人的姓名。我们把一个人的财富定义为他/她所有账户上的总财富。

这3张表格是:

代码语言:javascript
复制
Persons

id | name | address | age | eyeColor | gender

BankAccounts

id | balance

AccountOf

id | person_id → Persons | account_id → BankAccounts

有人能帮帮我吗?

代码语言:javascript
复制
SELECT Persons.name
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
HAVING SUM(B.balance) < MAX((SELECT SUM(B.balance) as b
  FROM AccountOf A1
  LEFT JOIN BankAccounts B ON B.id = A1.account_id
  GROUP BY A1.person_id ORDER BY b DESC  LIMIT 1)
) * 0.5;
EN

回答 1

Stack Overflow用户

发布于 2022-05-23 20:16:40

您没有提供任何示例数据或DBFiddle,因此这当然是未经测试的,但是您可以使用CTE*来构造一个查询:

代码语言:javascript
复制
with p as (
    select p.name, Sum(b.balance) balance
    from persons p
    join accountOf a on a.person_id = p.Id
    join BankAccounts b on b.Id = a.account_id
    group by p.name
)
select *
from p
where p.balance < (select Max(balance) from p) * 0.5;

(*需要MySql 8+)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72354135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档