我有下表:
表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 |
+----+-----------+-------+
如何以这样的方式格式化查询:输出多个记录而不是一个?我尝试过使用连接但我遇到了问题。
答案 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