我有一个小问题,根据SUM()
的结果加入两个表。以下是我的表格。
Customers Table
CUSTOMERID NAME AGE ADDRESS PHONE
1 AA 33 Some Address 123654789
2 BB 35 Some Address 123654789
3 CC 55 Some Address 987654789
4 DD 55 Some Address 987654789
5 EE 25 Some Address 365754789
6 FF 20 Some Address 365754789
Orders Table
ORDERID CUSTOMERID ORDERAMOUNT
C12335 3 50000
F12336 3 12000
C12337 3 5000
C12338 1 3700
C12339 2 1100
我显示customerID,Name,Address
,ORDERAMOUNT
总和超过50000的客户的订单总和。
但是,由于我不能在SUM()
子句之后使用像WHERE
这样的聚合函数,所以我在这里遇到了麻烦。
SELECT C.NAME,C.ADDRESS,O.CUSTOMERID
FROM CUSTOMERS C
INNER JOIN
(
SELECT CUSTOMERID,SUM(ORDERAMOUNT) FROM ORDERS GROUP BY CUSTOMERID
)O ON C.CUSTOMERID = O.CUSTOMERID;
我可以编写的最先进的工作查询是这个并且它不会评估ORDERAMOUNT的Sum的条件超过50000。
有没有办法可以评估这个条件?非常感谢帮助。在此先感谢:)
答案 0 :(得分:4)
您可以在没有子查询的单个查询中执行此操作:
select c.name, c.address, c.customerid, sum(o.orderamount)
from customers c join
orders o
on o.customerid = c.customerid
group by c.name, c.address, c.customerid
having sum(o.orderamount) > 50000;
having
与where
类似,只是在聚合后过滤。您可以在having
子句中使用聚合函数。