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

如何编写SQL查询counter值高于平均值的所有id_film

报错原因

聚合函数AVG()无法直接在普通WHERE子句中使用,且你需要先全局计算出所有电影计数的平均值,再做行级筛选,所以需要额外嵌套子查询计算平均值。
另外你原有查询里的WHERE sq1.id_film = id_film是恒成立的冗余条件,可以直接删除,不影响查询结果。

兼容所有主流数据库的实现写法

SELECT id_film, counter
FROM (
    SELECT id_film, COUNT(*) as counter 
    FROM film_vorstellung 
    GROUP BY id_film
) as sq1 
WHERE counter > (
    -- 子查询单独计算所有计数的平均值
    SELECT AVG(counter) 
    FROM (
        SELECT COUNT(*) as counter 
        FROM film_vorstellung 
        GROUP BY id_film
    ) as sq2
);

简化写法(支持CTE的数据库可用,如MySQL 8.0+、PostgreSQL、SQL Server等)

用公共表表达式避免重复编写统计逻辑,可读性更高:

WITH film_count AS (
    SELECT id_film, COUNT(*) as counter 
    FROM film_vorstellung 
    GROUP BY id_film
)
SELECT id_film, counter
FROM film_count
WHERE counter > (SELECT AVG(counter) FROM film_count);

执行结果

按照你提供的测试数据,所有计数值的平均值为(1+1+1+2+3+1)/6 = 1.5,最终查询返回高于平均值的记录:

id_filmcounter
62
23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:00