Sql 返回拥有最富有者一半财富的人的姓名
对于一个赋值,我必须组合3个表并编写一个查询,返回所有财富少于最富有者一半的人的姓名。我们将一个人的财富定义为他/她所有账户上的总金额 这3个表格是:Sql 返回拥有最富有者一半财富的人的姓名,sql,Sql,对于一个赋值,我必须组合3个表并编写一个查询,返回所有财富少于最富有者一半的人的姓名。我们将一个人的财富定义为他/她所有账户上的总金额 这3个表格是: 人 身份证|姓名|地址|年龄|眼睛颜色|性别 银行账户 id |余额 会计科目 身份证|个人身份证→ 人员|账户| id→ 银行账户 我知道如何使用te SUM()函数和MAX()函数,但是把它们结合起来真让我头疼。 还有人没有银行账户。 有人知道怎么做这个作业吗,或者能给我一个提示吗?不要泄露,因为这是一个作业,那样会毁掉整个事情,但是。
人 身份证|姓名|地址|年龄|眼睛颜色|性别
银行账户 id |余额
会计科目 身份证|个人身份证→ 人员|账户| id→ 银行账户 我知道如何使用te SUM()函数和MAX()函数,但是把它们结合起来真让我头疼。 还有人没有银行账户。
有人知道怎么做这个作业吗,或者能给我一个提示吗?不要泄露,因为这是一个作业,那样会毁掉整个事情,但是。。。你需要找到最富有的人的总和(余额),这将是所有人总和(余额)的最大值。这将类似于:
SELECT
max(personbalance)
FROM
(
Select
sum(balance)
FROM
persons
join accountof
join bankaccounts
GROUP BY persons.id
)subForSum
这只是主查询中的一个子查询,但它应该为您提供足够的方向,以便将其余部分组合在一起。当对这些事情有疑问时,只需子查询、子查询和子查询。你可以在得到你想要的答案后把它清理干净。对于正在寻找答案的未来学生:
- 使用左联接,因为某些人可能不在BankAccount表中
- 获取null值并使用coalesce替换这些值
- 将此用作子查询以获取最富有的人并比较值:
祝你好运 提示:使用子查询识别最富有的人。请添加您尝试过的内容,即使它可能无法得到正确的结果。如果可能的话还有一个sqlfiddle。你使用的是哪种数据库管理系统?@deterministicFail这些作业问题与数据库管理系统无关。我一直在胡思乱想,甚至离答案更远。我现在有:选择不同的总和(B.余额)作为货币,P1.姓名来自个人P1,银行账户B,账户A,其中P1.id=A.person\u id和B.id=A.account\u id按P1.name分组
SELECT max(personbalance)
FROM
(
Select
sum(balance)
FROM
persons
join accountof
join bankaccounts
GROUP BY persons.id
)