首页  >  问答  >  正文

在MYSQL中使用sum函数过滤窗口函数的方法

<p>如何编写此查询以仅过滤出总和大于50的结果?我无法使用having或sum使其正常工作,但我确定有某种方法。</p> <pre class="brush:php;toolbar:false;">select name, sum(score) from submissions inner join hacker on submissions.hacker_id = hacker.hacker_id group by submissions.hacker_id order by sum(score) desc having sum(score) > 50</pre> <p>这里有一个包含表格的示例(表格没有什么特殊之处,此查询在没有最后一行的情况下运行,但会返回所有人的分数和姓名):http://sqlfiddle.com/#!9/7a660d/16</p>
P粉186904731P粉186904731387 天前540

全部回复(2)我来回复

  • P粉877114798

    P粉8771147982023-08-31 15:51:51

    Order by should be in last

    select name, sum(score) 
    from submissions 
    inner join hacker on submissions.hacker_id = hacker.hacker_id
    group by submissions.hacker_id
    having sum(score) > 50 
    order by sum(score) desc

    按照应该在最后进行排序

    选择 名称, 总分
    从 提交
    内连接 黑客 on 提交.黑客编号 = 黑客.黑客编号
    分组 按 提交.黑客编号
    筛选 总分 > 50 
    排序 按 总分 降序

    回复
    0
  • P粉909476457

    P粉9094764572023-08-31 00:57:15

    您的order by应该在您的having之后。即:

    select 
        name, 
        sum(score) 
    from 
        submissions 
    inner join 
        hacker on submissions.hacker_id = hacker.hacker_id
    group by 
        submissions.hacker_id
    having 
        sum(score) > 50 
    order by 
        sum(score) desc
    

    回复
    0
  • 取消回复