(SQL)使用sum苦苦挣扎

时间:2014-01-26 16:01:54

标签: sql oracle select sum

我正在学习SQL,并且正在努力学习一些语法。因此,以下SQL代码应显示供应商列表及其所有产品的总价。它工作正常,直到我尝试包含额外条件,我只希望它显示总和小于100的行。

SELECT Suppliers.SupplierName, SUM(Products.Price)
FROM Suppliers, Products
WHERE Suppliers.SupplierID = Products.SupplierID
AND Products.Price < 100
GROUP BY Suppliers.SupplierName;

正如代码目前一样,它只是从最终总数中省略了大于100的单个值。将代码更改为

AND SUM(Products.Price) < 100

也没用。而且我不确定我应该如何让它按照我想要的方式工作。

另外,使用Oracle。

3 个答案:

答案 0 :(得分:4)

如果您正在学习SQL,则应学习使用显式join语法。我想你正在寻找having条款;这就是汇总金额的条件:

SELECT s.SupplierName, SUM(p.Price)
FROM Suppliers s join
     Products p
     on s.SupplierID = p.SupplierID
GROUP BY s.SupplierName
HAVING SUM(p.Price) < 100;

我还在查询中添加了表别名(sp)。这些通常使查询更容易阅读,并且自连接需要它们。

答案 1 :(得分:0)

试试这个:

SELECT Suppliers.SupplierName, SUM(Products.Price) totalPrice
FROM Suppliers, Products
WHERE Suppliers.SupplierID = Products.SupplierID
GROUP BY Suppliers.SupplierName
HAVING totalPrice < 100;

答案 2 :(得分:0)

使用

WHERE Suppliers.SupplierID = Products.SupplierID
GROUP BY Suppliers.SupplierName
HAVING SUM(Products.Price) < 100;