如何为sum()输出多个记录

时间:2017-04-21 14:51:18

标签: mysql sql mariadb

我有下表:

表1

+----+-----------+-------+
| id | longitude | score |
+----+-----------+-------+
|  1 |        18 |    10 |
|  2 |        18 |    10 |
|  3 |        19 |     5 |
+----+-----------+-------+

我正在尝试创建一个查询,从Table1中选择经度= 18的所有数据,但只输出得分总和大于15的记录。所以基本上,我正在寻找这个输出:

+----+-----------+-------+
| id | longitude | score |
+----+-----------+-------+
|  1 |        18 |    10 |
|  2 |        18 |    10 |
+----+-----------+-------+

我一直在尝试多个查询,但没有一个能给我我正在寻找的内容,或者他们有一些语法错误。我试过这个:

  

从Table1中选择*,其中经度= 18   总和(评分)→15

但它产生了这个结果:

+----+-----------+-------+
| id | longitude | score |
+----+-----------+-------+
|  1 |        18 |    10 |
+----+-----------+-------+

如何以这样的方式格式化查询:输出多个记录而不是一个?我尝试过使用连接但我遇到了问题。

2 个答案:

答案 0 :(得分:1)

您错过了GROUP BY

select longitude, sum(score) score_sum
from Table1 
where longitude = 18 
group by longitude
having sum(score)>15

您可以查看here

答案 1 :(得分:0)

您可以使用带窗口函数的sum,如下所示:

select * from (
select id, longitude, score, Sm = sum(score) over(partition by longitude) from #yourTable ) a
where a.sm > 15 and a.longitude = 18