2017-04-21 41 views
1

我有如下表:我要如何和輸出多個記錄()

表1

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

我試圖創建一個選擇從表1中的所有數據的查詢,其中經度= 18但只輸出記錄中,其中得分的總和大於15所以基本上,我在尋找這樣的輸出:

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

我一直試圖多次查詢,但沒有人給我W¯¯我正在尋找的帽子,或者他們有一些語法錯誤。我已經試過這一個:

SELECT * FROM表1,其中經度= 18具有 總和(評分)> 15

但它會產生這樣的結果:

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

如何能我以這種方式格式化查詢,以便輸出多個記錄而不僅僅是一個?我嘗試過使用連接,但我遇到了問題。

+1

哪些DBMS您使用的? mysql <> sql server –

+0

@SeanLange mysql – DanielleS

+0

@SeanLange xamp server- mariadb/mysql – DanielleS

回答

1

你缺少一個GROUP BY

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

你可以檢查出來here

+0

它返回一個空結果集 – DanielleS

+0

您更新的查詢只返回一條記錄。 – DanielleS

+0

您上次更新的查詢工作。謝謝! – DanielleS

0

您可能需要GROUP您想要使用的值(可能是經度)。

編輯: 哦 - 並刪除WHERE經度位。

+0

我嘗試了一個查詢,這個查詢是在「group by」的答案中建議的,它只返回一條記錄。 – DanielleS

0

您可以使用和用如下窗函數:

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

這給了我一堆的語法錯誤。 – DanielleS

+0

MySQL至少在版本8之前不支持窗口功能。 –