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

SQL计算同类型排除当前行的平均值 筛选销量超2倍该值的车型

SQL查询实现方案

方案1:窗口函数实现(支持MySQL 8.0+、PostgreSQL、SQL Server等主流新版数据库)

核心逻辑是先通过窗口函数聚合拿到同类型总销量、总车型数,再扣除当前行的数值计算排除自身后的平均销量,性能比子查询更优:

SELECT model, sales
FROM (
    SELECT
        model,
        sales,
        type,
        -- 计算同类型排除当前车型后的平均销量
        (SUM(sales) OVER(PARTITION BY type) - sales) / (COUNT(*) OVER(PARTITION BY type) - 1) AS type_avg_without_current
    FROM car
) AS temp
WHERE sales > 2 * type_avg_without_current;

注意:如果某类车型只有1款的场景,会出现除以0的异常,可按需加CASE WHEN COUNT(*) OVER(PARTITION BY type) = 1 THEN 0 ELSE ... END处理边界情况

方案2:关联子查询实现(兼容所有数据库版本,包括低版本MySQL)

通过子查询直接匹配同类型非当前车型的平均销量,逻辑更直观:

SELECT c1.model, c1.sales
FROM car c1
WHERE c1.sales > 2 * (
    SELECT AVG(c2.sales)
    FROM car c2
    WHERE c2.type = c1.type 
    -- 排除当前车型,model为车型唯一标识时可用,否则替换为表主键
    AND c2.model != c1.model
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:48:00