You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多表关联分组查询中筛选SUM(price)超指定值的行?

过滤聚合后的SUM结果

你现在的查询已经完成了分组求和并排序,但要筛选出SUM(price)超过特定数值的行,需要用**HAVING子句**——因为WHERE子句只能在分组前过滤原始行,不能直接使用聚合函数(比如SUM())作为过滤条件,而HAVING是专门用来对分组后的结果进行过滤的。

修改后的SQL示例

假设你想要筛选总和超过100的记录,可以这样写:

select customers.name, SUM(items.price) as "price" 
from items 
INNER JOIN purchases ON items.id = purchases.item_id 
INNER JOIN customers ON purchases.customer_id = customers.id 
GROUP BY customers.name 
HAVING SUM(items.price) > 100  -- 替换成你需要的阈值
ORDER BY "price"

如果你的数据库支持在HAVING中使用别名(比如PostgreSQL、MySQL在特定模式下),也可以简化成:

select customers.name, SUM(items.price) as "price" 
from items 
INNER JOIN purchases ON items.id = purchases.item_id 
INNER JOIN customers ON purchases.customer_id = customers.id 
GROUP BY customers.name 
HAVING "price" > 100
ORDER BY "price"

对应你的结果示例

用上面的阈值(>100),最终会得到以下结果:

"Michael Adam" "101.29"
"Jose Salvatierra" "899.00"
"Rolf Smith" "1174.50"

你只需要把100替换成你实际想要的数值即可。

内容的提问来源于stack exchange,提问作者Eduard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:27:52