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

如何获取SQL查询返回的前3条GrossProfit记录的平均值?GROUP BY报错求助

解决方法:计算利润Top3电影的平均毛利

嘿,别担心!作为SQL新手遇到这种问题很正常,我来一步步帮你解决~

你之前尝试用GROUP BY出错,是因为GROUP BY的作用是对整张表的行按指定字段分组后聚合,但你的需求是先筛选出毛利最高的3条记录,再计算这3条的平均值——所以得先把目标数据筛选出来,再做聚合计算,而不是直接用GROUP BY。

下面给你两种简单易懂的实现方式:

方法1:使用子查询

子查询可以先帮我们拿到毛利Top3的记录,再在外层对这些记录求平均值:

SELECT AVG(GrossProfit) AS AvgTop3GrossProfit
FROM (
    -- 内层子查询:获取毛利最高的3条记录的GrossProfit字段
    SELECT GrossProfit
    FROM Cinema
    ORDER BY GrossProfit DESC
    LIMIT 3
) AS Top3Profits; -- 给子查询结果起个临时表名,方便外层调用

方法2:使用CTE(公共表表达式)

CTE的写法更清晰,适合新手理解逻辑,本质和子查询一样,只是把临时结果集提前定义出来:

-- 先定义CTE:存储毛利最高的3条记录的GrossProfit
WITH Top3Profits AS (
    SELECT GrossProfit
    FROM Cinema
    ORDER BY GrossProfit DESC
    LIMIT 3
)
-- 对CTE中的数据计算平均值
SELECT AVG(GrossProfit) AS AvgTop3GrossProfit
FROM Top3Profits;

这两种方法都会先得到你想要的Top3毛利数据,再计算它们的平均值,完美解决你的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:29:29