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

在单条SQL查询中同时计算平均值与求和的实现问题

解决方案

直接在单条分组查询中计算月度总和,再结合当月天数得到你需要的日均平均值(AVERAGETOTAL),无需嵌套分组:

SELECT
    id,
    DATE_TRUNC('month', date_column) AS date_month, -- 按月份分组,不同数据库语法有差异
    SUM(value_column) AS valuetotal,
    SUM(value_column) / DAY(LAST_DAY(date_column)) AS averagetotal
FROM
    your_table
GROUP BY
    id, DATE_TRUNC('month', date_column)
ORDER BY
    id, date_month;

数据库适配说明

不同数据库的日期处理语法需做对应调整:

  • MySQL:用DATE_FORMAT(date_column, '%Y-%m-01')替代DATE_TRUNC('month', date_column),DAY(LAST_DAY(date_column))可直接使用
  • Oracle:用TRUNC(date_column, 'MM')作为月份分组字段,EXTRACT(DAY FROM LAST_DAY(date_column))获取当月天数
  • SQL Server:用DATEFROMPARTS(YEAR(date_column), MONTH(date_column), 1)作为月份分组字段,DAY(EOMONTH(date_column))获取当月天数

优化提示

如果需要保留两位小数,可对平均值计算做四舍五入处理:

ROUND(SUM(value_column) / DAY(LAST_DAY(date_column)), 2) AS averagetotal

以你提到的8月数据为例,SUM得到246.10,除以31天会直接得到7.94,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:50:35