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

如何为多车型计算均价并筛选低于均价的车辆(不硬编码)

解决多车型均价筛选问题的方案

这问题我太熟了!要不用硬编码就能处理所有车型,窗口函数就是最优解,完全不用给每个车型单独写查询再拼接。

核心思路

我们可以用窗口函数里的 AVG() OVER (PARTITION BY 车型字段),它能帮我们按车型分组,自动计算每个车型的平均价格,并且把这个均价关联到该车型的每一条数据上。之后只需要筛选出价格低于对应车型均价的记录就行,一次查询搞定所有车型。

具体SQL示例

假设你的carversions表中,车型字段是model,价格字段是price,其他字段比如车辆ID、名称等按需保留。这里提供两种写法,选你习惯的就行:

写法一:用CTE(可读性更高)

WITH model_avg_cte AS (
    SELECT 
        *,
        -- 按车型分组计算均价,每条数据都带上所属车型的均价
        AVG(price) OVER (PARTITION BY model) AS model_avg_price
    FROM carversions
)
-- 筛选出价格低于对应车型均价的车辆
SELECT 
    id, model, price, model_avg_price
FROM model_avg_cte
WHERE price < model_avg_price
ORDER BY model, price; -- 按车型和价格排序,方便查看

写法二:子查询(更简洁)

SELECT 
    id, model, price, model_avg_price
FROM (
    SELECT 
        *,
        AVG(price) OVER (PARTITION BY model) AS model_avg_price
    FROM carversions
) AS sub
WHERE price < model_avg_price
ORDER BY model, price;

注意事项

  • 把示例里的model和price替换成你表中实际的车型字段名和价格字段名就行;
  • 这个查询会自动处理所有存在的车型,不管新增多少种,都不需要修改代码,彻底摆脱硬编码;
  • 如果有需要,你可以在SELECT里添加其他字段(比如车辆年份、配置等),不影响核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:27