0

我被问到以下问题:

显示总金额小于或等于 25 美元的所有订单的订单号和订单总金额。

我正在尝试执行以下操作,但收到错误消息:

SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
WHERE (orderTotal < 25) OR (orderTotal = 25) 
GROUP BY orderNumber 

我收到一条错误消息,所以很明显我做错了什么。有什么建议么?

4

3 回答 3

3

乍一看,我认为您必须使用HAVING SUM(orderPrice * orderQuantity) <= 25而不是 WHERE 条件。

所以,你的查询应该是这样的:

SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
GROUP BY orderNumber
HAVING SUM(orderPrice * orderQuantity) <= 25
于 2013-10-03T09:13:39.077 回答
0

使用这个:

SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
  FROM OrderProduct
 GROUP BY orderNumber 
HAVING orderTotal <= 25;

看看这个小提琴

在 ORACLE 数据库上使用Radu Gheorghiu版本。

于 2013-10-03T09:18:57.083 回答
0

您必须在 group by 中使用having子句来检查聚合函数的任何条件

SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
GROUP BY orderNumber 
having orderTotal <= 25
于 2013-10-03T09:13:52.583 回答