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

MySQL实现透视表行转列 按日期分组统计各账户金额及平均值

MySQL 按日期行转列+计算日均值的最优查询方案

首先假设你的表名为account_records,可替换为实际表名。

最优查询语句

该方案使用条件聚合实现行转列,仅需单次扫描表,性能远高于多表关联、子查询等实现方式,兼容所有MySQL版本:

SELECT
    `date`,
    SUM(CASE WHEN account = 1 THEN amount ELSE 0 END) AS account1,
    SUM(CASE WHEN account = 2 THEN amount ELSE 0 END) AS account2,
    SUM(CASE WHEN account = 3 THEN amount ELSE 0 END) AS account3,
    AVG(amount) AS average_amount
FROM account_records
GROUP BY `date`
ORDER BY `date`;

注:如果同一个日期同一个账户可能存在多条记录,用SUM可直接做金额汇总;如果确定单条记录,用MAX/MIN效果完全一致。

样例输出

针对你提供的测试数据,查询结果如下:

dateaccount1account2account3average_amount
2021-013000210018002300.0000
2021-023500150025002500.0000

方案说明

  • 不需要使用MySQL 8.0+的窗口函数或PIVOT语法,低版本也可正常运行
  • 仅需一次表扫描即可完成所有计算,是该场景下性能最高的实现
  • 语法简洁易维护,调整账户数量只需要新增对应CASE WHEN分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:36:04