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

MySQL 5.7查询如何获取分组结果的销售额总计与平均值

MySQL 5.7 实现带总计、平均值的分组统计方案

核心逻辑

MySQL 5.7 不支持窗口函数、CTE 等高阶语法,要实现「按日期分组的日销明细+全量总计+日销平均值」的结果,直接通过UNION ALL拼接多段结果集即可,额外加排序标记保证结果展示顺序符合预期。

最终查询语句

SELECT 
    ord_date,
    product_sales
FROM (
    -- 每日销售明细
    SELECT 
        ord_date,
        SUM(product_sales) AS product_sales,
        1 AS sort_order
    FROM salestable
    GROUP BY ord_date

    UNION ALL

    -- 销售额总计行
    SELECT 
        '总计' AS ord_date,
        SUM(product_sales) AS product_sales,
        2 AS sort_order
    FROM salestable

    UNION ALL

    -- 日销平均值行
    SELECT 
        '平均值' AS ord_date,
        ROUND(AVG(daily_sales), 2) AS product_sales,
        3 AS sort_order
    FROM (
        -- 先统计每日销售额,再基于日销数据算平均值,避免统计口径错误
        SELECT SUM(product_sales) AS daily_sales
        FROM salestable
        GROUP BY ord_date
    ) daily_stat
) final_result
ORDER BY sort_order, ord_date;

注意事项

  • 内层增加sort_order字段是为了固定结果顺序:优先展示按日期排序的每日明细,之后展示总计行,最后展示平均值行,避免统计行穿插在明细中
  • 平均值的计算口径是「每日销售额的平均值」,而非单条订单记录的销售额平均值,和分组统计的业务逻辑一致,ROUND函数的保留小数位数可根据实际业务需求调整
  • 所有语法完全兼容MySQL 5.7版本,无需额外配置即可运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:03:22