导读:本期聚焦于小伙伴创作的《SQL如何对比当前数据与行业平均水平_AVG窗口函数应用》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL如何对比当前数据与行业平均水平_AVG窗口函数应用》有用,将其分享出去将是对创作者最好的鼓励。

在业务数据分析中,我们常常需要判断某个企业、某个产品或者某个用户的指标表现是否优于行业整体水平,这就需要把当前数据和行业平均水平放在一起做对比。使用AVG窗口函数可以高效完成这个需求,不需要额外的表关联操作。

SQL如何对比当前数据与行业平均水平_AVG窗口函数应用

AVG窗口函数基础语法

AVG窗口函数是SQL中窗口函数的一种,用于计算指定窗口范围内的平均值,基本语法如下:

AVG(需要计算平均值的列) OVER (
    [PARTITION BY 分组列]
    [ORDER BY 排序列 [ASC|DESC]]
    [窗口范围]
)

其中PARTITION BY用来指定分组的维度,比如按行业分组的话,就会在每个行业内部单独计算平均值;ORDER BY用来指定排序规则,部分场景下需要按时间等维度排序后再计算滑动平均;窗口范围用来指定计算平均值的行范围,不指定的话默认计算当前分组内的所有行。

对比当前数据与行业平均水平的实现步骤

假设我们有一张企业营收数据表enterprise_revenue,表结构如下:

字段名类型说明
enterprise_idINT企业ID
industryVARCHAR所属行业
revenueDECIMAL年度营收(万元)

现在需要查询每个企业的营收,同时展示对应行业的平均营收,并且标注该企业的营收是否高于行业平均。

第一步:计算行业平均营收

使用AVG窗口函数按行业分组计算平均营收,代码如下:

SELECT
    enterprise_id,
    industry,
    revenue,
    -- 按行业分组计算平均营收
    AVG(revenue) OVER (PARTITION BY industry) AS industry_avg_revenue
FROM enterprise_revenue;

这段查询会保留原表的所有行,同时新增industry_avg_revenue列,每个企业对应的该列值就是其所属行业的所有企业营收平均值。

第二步:对比当前数据与行业平均

基于上一步的查询结果,我们可以进一步判断每个企业的营收是否高于行业平均,完整代码如下:

SELECT
    enterprise_id,
    industry,
    revenue,
    industry_avg_revenue,
    -- 判断当前营收是否高于行业平均
    CASE
        WHEN revenue > industry_avg_revenue THEN '高于行业平均'
        WHEN revenue = industry_avg_revenue THEN '等于行业平均'
        ELSE '低于行业平均'
    END AS revenue_compare_result
FROM (
    SELECT
        enterprise_id,
        industry,
        revenue,
        AVG(revenue) OVER (PARTITION BY industry) AS industry_avg_revenue
    FROM enterprise_revenue
) t;

使用注意事项

  • AVG窗口函数计算平均值时会自动忽略NULL值,如果某列存在NULL,需要提前用COALESCE函数处理,避免影响平均结果准确性。
  • 如果只需要计算整体行业的平均,不需要按行业分组,可以省略PARTITION BY子句,此时窗口会覆盖所有行,计算全量数据的平均值。
  • 窗口函数的执行顺序在WHERE、GROUP BY之后,所以如果需要对数据做过滤,要先在子查询或者CTE中完成过滤,再使用窗口函数计算平均值。

总结

使用AVG窗口函数对比当前数据与行业平均水平,相比传统的先聚合再关联的方式,代码更简洁,执行效率也更高。只需要通过PARTITION BY指定行业分组维度,就能直接在原数据行上得到行业平均数值,后续可以灵活做各种对比分析。掌握这个技巧可以大幅提升日常数据分析的效率,适合各类需要分组对比平均值的场景。

SQLAVG窗口函数数据对比行业平均水平修改时间:2026-07-03 15:48:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。