如何在 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。