gpt4 book ai didi

sql - 根据聚合函数结果连接表

转载 作者:行者123 更新时间:2023-12-01 12:18:33 30 4
gpt4 key购买 nike

我有一个小问题与根据 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 的客户的订单总和。

但是,由于我不能在 WHERE 子句之后使用像 SUM() 这样的聚合函数,所以我在这里遇到了麻烦。

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 的总和超过 50000 的条件。

有没有一种方法可以评估该条件?非常感谢您的帮助。提前致谢:)

最佳答案

您可以在没有子查询的单个查询中执行此操作:

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 子句中使用聚合函数。

关于sql - 根据聚合函数结果连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46342815/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com