2015-11-03 126 views
2

所以這隻比標題暗示的更多一點。我有其中包含柱和數量列的表,我想顯示誰擁有合計金額數量結果500之間和1500如何在SQL查詢中顯示特定範圍的數字

例子:

name  qty 
------ ---- 
brad  100 
cody  300 
kylie 1100 
brad  800 
nelson 1200 
bob  600 
nelson 100 
kylie 600 

我想要顯示的結果

name  qty 
------ ---- 
brad  900 
nelson 1300 
bob  600 

希望這是有道理的。這是查詢我有

SELECT name, SUM(qty) AS Total 
FROM t1 
    NATURAL JOIN t2 
WHERE qty BETWEEN 500 AND 1500 
GROUP BY name 
ORDER BY name 

的問題是,它似乎只在數量是500和1500之間,而不是隻顯示字段都可以總結領域在那個範圍內。我試着做「WHERE SUM(qty)BETWEEN ....」但這導致編譯錯誤(我使用SQLite工作室)

這是一個數據庫類的家庭作業問題我在,我希望學習,不只是得到答案。謝謝!

+0

感謝編輯培根位,現在看起來更清潔! – dks209

回答

5

沒有必要的連接,你需要增加一個HAVING子句

SELECT name, SUM(qty) AS Total 
FROM t1 
GROUP BY name 
HAVING SUM(qty) BETWEEN 500 AND 1500 
ORDER BY name 
+0

這正是我需要的,謝謝! – dks209

0

您需要使用HAVING子句,這是聚合函數後,評價像SUM:

SELECT name 
    ,SUM(qty) AS Total 
FROM t1 
NATURAL JOIN t2 
GROUP BY name 
HAVING SUM(qty) BETWEEN 500 AND 1500 
ORDER BY name 

我也建議不要NATURAL JOIN。它是generally considered bad practice,因爲它引入了一個沒有良好回報的錯誤點。

+0

t1包含**名稱**列和一個** ID **列,並且t2具有**數量**列和** ID **列。 id是將數字鏈接到特定名稱的通用性。如果沒有進行NATURAL JOIN,那麼對我來說更好的方法是什麼? – dks209

+1

@ dks209顯式指定JOIN條件:'FROM t1 NATURAL JOIN t2'變成'FROM t1 INNER JOIN t2 ON t1.id = t2.id'。 –