Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 返回拥有最富有者一半财富的人的姓名_Sql - Fatal编程技术网

Sql 返回拥有最富有者一半财富的人的姓名

Sql 返回拥有最富有者一半财富的人的姓名,sql,Sql,对于一个赋值,我必须组合3个表并编写一个查询,返回所有财富少于最富有者一半的人的姓名。我们将一个人的财富定义为他/她所有账户上的总金额 这3个表格是: 人 身份证|姓名|地址|年龄|眼睛颜色|性别 银行账户 id |余额 会计科目 身份证|个人身份证→ 人员|账户| id→ 银行账户 我知道如何使用te SUM()函数和MAX()函数,但是把它们结合起来真让我头疼。 还有人没有银行账户。 有人知道怎么做这个作业吗,或者能给我一个提示吗?不要泄露,因为这是一个作业,那样会毁掉整个事情,但是。

对于一个赋值,我必须组合3个表并编写一个查询,返回所有财富少于最富有者一半的人的姓名。我们将一个人的财富定义为他/她所有账户上的总金额

这3个表格是:


身份证|姓名|地址|年龄|眼睛颜色|性别


银行账户

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  
    )