返回拥有最富有人财富一半的人的名字

时间:2015-03-03 14:59:46

标签: sql

对于作业,我必须组合3个表并编写一个查询,该查询返回所有人的名字,这些人的财富少于最富有人的一半。我们将一个人的财富定义为他/她所有账户的总金额。

3个表格是:


id |名字|地址|年龄| eyeColor |性别


BankAccounts

id |平衡


AccountOf

id | person_id→人物| account_id→BankAccounts

我知道如何使用te SUM()函数和MAX()函数,但是将它们组合起来很麻烦。 还有一个没有银行帐户的人。  有谁知道如何做这个任务或者可以给我一个提示?

2 个答案:

答案 0 :(得分:1)

不要放弃它,因为它是一项任务,而且那种废物整个事情,但是......你需要为最富有的人找到总和(余额),这将是所有人的最大值人的总和(余额)。这看起来像是:

SELECT
    max(personbalance)
FROM
    (
        Select 
            sum(balance)
        FROM
            persons
            join accountof
            join bankaccounts
        GROUP BY persons.id
    )subForSum

这只是主查询中的一个子查询,但它应该给你足够的方向来将其余部分打到一起。如果对这些事情有疑问,只需要子查询,子查询和子查询。在得到你期望的答案后,你可以清理它。

答案 1 :(得分:0)

对于正在寻找答案的未来学生:

  • 使用左加入,因为某些人可能不在BankAccount表中
  • 获取空值并使用合并替换值
  • 将此作为子查询来获取首富并比较值:
    SELECT max(personbalance)  
    FROM  
        (  
        Select   
            sum(balance)  
        FROM  
            persons  
            join accountof  
            join bankaccounts  
        GROUP BY persons.id  
    )

祝你好运!