如何在 SQL 查询中显示特定范围的数字
How to display a specific range of numbers in an SQL query
所以这比标题所暗示的要多一点。我有一个 table 其中包含一个 name 列和一个 qty 列,我想显示具有 TOTAL 的结果总数量在 500 到 1500 之间。
示例:
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
问题是它似乎只对 qty 中 500 到 1500 之间的字段求和,而不是仅显示 Total 该范围内的字段。我试过 "WHERE SUM(qty) BETWEEN...." 但这会导致编译错误(我使用的是 SQLite studio)
这是一道关于数据库的作业class我在,我想学习,而不仅仅是得到答案。谢谢!
不需要连接,需要添加HAVING子句
SELECT name, SUM(qty) AS Total
FROM t1
GROUP BY name
HAVING SUM(qty) BETWEEN 500 AND 1500
ORDER BY name
您需要使用 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,因为它引入了一个错误点,但没有好处 return。
所以这比标题所暗示的要多一点。我有一个 table 其中包含一个 name 列和一个 qty 列,我想显示具有 TOTAL 的结果总数量在 500 到 1500 之间。
示例:
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
问题是它似乎只对 qty 中 500 到 1500 之间的字段求和,而不是仅显示 Total 该范围内的字段。我试过 "WHERE SUM(qty) BETWEEN...." 但这会导致编译错误(我使用的是 SQLite studio)
这是一道关于数据库的作业class我在,我想学习,而不仅仅是得到答案。谢谢!
不需要连接,需要添加HAVING子句
SELECT name, SUM(qty) AS Total
FROM t1
GROUP BY name
HAVING SUM(qty) BETWEEN 500 AND 1500
ORDER BY name
您需要使用 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,因为它引入了一个错误点,但没有好处 return。