我被问到以下问题:
显示总金额小于或等于25美元的所有订单的订单号和订单总金额。
我正在尝试执行以下操作,但收到错误消息:
SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
WHERE (orderTotal < 25) OR (orderTotal = 25)
GROUP BY orderNumber
我收到了一条错误消息,显然我做错了。 有什么建议?
答案 0 :(得分:3)
乍一看,我认为你必须使用HAVING SUM(orderPrice * orderQuantity) <= 25
而不是WHERE条件。
所以,你的查询应该是这样的:
SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
GROUP BY orderNumber
HAVING SUM(orderPrice * orderQuantity) <= 25
答案 1 :(得分:0)
您必须在分组依据中使用 having 子句来检查 aggregate function
上的任何条件SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
GROUP BY orderNumber
having orderTotal <= 25
答案 2 :(得分:0)
使用这个:
SELECT orderNumber, SUM(orderPrice * orderQuantity) AS orderTotal
FROM OrderProduct
GROUP BY orderNumber
HAVING orderTotal <= 25;
查看this Fiddle。
在ORACLE数据库上使用Radu Gheorghiu's版本。