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

如何筛选平均奖杯数超过20的国家?SQL查询优化需求

解决方法

关键修改逻辑

你的现有SQL已经完成了数据合并、关联和分组计算,但缺少聚合后的筛选步骤。要只保留平均奖杯数超过20的国家,必须用HAVING子句对分组后的结果过滤;如果明确只需要Italy和Spain,也可以结合WHERE提前限定国家范围(但更推荐用HAVING保证逻辑严谨,避免硬编码国家但实际平均不达标的情况)。

修改后的完整SQL

SELECT 
    c.country,
    AVG(t.trophy) AS avg_trophy
FROM (
    -- 合并两个俱乐部表的国家与俱乐部数据
    SELECT country, club FROM Tbl_Club1
    UNION ALL
    SELECT country, club FROM Tbl_Club2
) AS c
JOIN Tbl_Trophy t ON c.club = t.club
-- 可选:提前限定国家范围,缩小查询数据量
-- WHERE c.country IN ('Italy', 'Spain')
GROUP BY c.country
-- 核心:过滤平均奖杯数大于20的分组
HAVING AVG(t.trophy) > 20;

补充说明

  • WHERE是在分组前过滤行数据,HAVING是分组后过滤聚合结果,这里必须用HAVING来筛选平均奖杯数的条件。
  • 如果业务上已经确认只有Italy和Spain满足平均>20的要求,加上WHERE c.country IN ('Italy', 'Spain')可以减少关联计算的数据量,提升查询速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:34:51