首页 > 解决方案 > 使用 where 过滤总数

问题描述

我需要一些帮助来查找此代码中的错误。我可以使用 where 过滤结果吗?

SELECT OrderID, sum(UnitPrice * Quantity) as Total
FROM [Order Details]
WHERE Total > 10

标签: sql

解决方案


由于您使用聚合函数 SUM,因此您需要对 OrderId 进行 GROUP BY。

然后您可以在 HAVING 子句中过滤聚合函数的结果。

另一方面,对 OrderId 的过滤将在 WHERE 子句中完成。

但是根据数据库的类型,不允许在 HAVING 子句中使用别名(fe Total)。

所以在标准 SQL 中,它会变成这样:

SELECT OrderID, SUM(UnitPrice * Quantity) as Total
FROM "Order Details"
GROUP BY OrderID
HAVING SUM(UnitPrice * Quantity) > 10

推荐阅读