MySQL 技巧:巧用窗口函数计算累计值

简介: MySQL 技巧:巧用窗口函数计算累计值

MySQL 技巧:巧用窗口函数计算累计值

在日常开发中,经常遇到需要计算累计销售额、排名或同比数据的场景。传统做法依赖子查询或变量,复杂且易错。MySQL 8.0 引入的窗口函数可以优雅解决这类问题。

场景:按月统计订单总额及累计总额

假设有订单表 orders,字段:order_dateamount。需要输出每月总额及截止当月的累计总额。

SELECT 
    DATE_FORMAT(order_date, '%Y-%m') AS month,
    SUM(amount) AS monthly_total,
    SUM(SUM(amount)) OVER (ORDER BY DATE_FORMAT(order_date, '%Y-%m')) AS cumulative_total
FROM orders
GROUP BY month
ORDER BY month;

核心技巧SUM(SUM(amount)) OVER (...)

  • 内层 SUM(amount) 按月聚合得到月度总额。
  • 外层 SUM(...) OVER 对聚合结果开窗,按月份顺序累加,轻松获得累计值。

更多窗口函数应用

  • 排名ROW_NUMBER()RANK() 去重排序。
  • 环比LAG(amount, 1) 获取上月值,直接计算增长率。

窗口函数让复杂统计变得简洁高效,建议升级到 MySQL 8.0 后重点掌握。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
MySQL 技巧:用好窗口函数,告别复杂子查询
MySQL 技巧:用好窗口函数,告别复杂子查询
|
存储 Linux 数据安全/隐私保护
安装部署milvus单机版(快速体验)
安装部署milvus单机版(快速体验)
5660 0
|
5月前
|
SQL 移动开发 关系型数据库
MySQL技巧:利用窗口函数高效去重,告别嵌套子查询
MySQL技巧:利用窗口函数高效去重,告别嵌套子查询
|
5月前
|
索引 Python
5个让你爱不释手的Python实用技巧
5个让你爱不释手的Python实用技巧
302 146
|
5月前
|
Python
3个让你爱不释手的Python冷门技巧
3个让你爱不释手的Python冷门技巧
371 146
|
5月前
|
SQL 关系型数据库 MySQL
5个提升MySQL查询效率的实用技巧
5个提升MySQL查询效率的实用技巧
|
3月前
|
存储 Rust NoSQL
一条命令迁移,帮你实现 OpenClaw 与 Hermes Agent 记忆互通!
本文是基于阿里云 Tablestore 的 Agent 记忆共享实战指南:一条命令迁移 OpenClaw 记忆至 Hermes,通过统一 Tablestore 实例、应用 ID 与租户 ID,实现跨Agent(如龙虾与马)记忆自动互通、实时同步与语义检索,支持 CLI 管理与对话中直接调用,安全可靠,开箱即用。
3316 122
|
5月前
|
PHP 索引
PHP 技巧:用 `array_map` 一键处理数组,告别 `foreach` 噩梦
PHP 技巧:用 `array_map` 一键处理数组,告别 `foreach` 噩梦
483 141
|
关系型数据库 MySQL Linux
MySQL数据库----------安装anaconda---------python与数据库的链接
MySQL数据库----------安装anaconda---------python与数据库的链接
766 0
|
6月前
|
人工智能 缓存 安全
OpenClaw“2小时消耗100美元”?OpenClaw/Clawdbot降本攻略:5个Token节省Skills教程(立省97%成本)
“2小时消耗100美元”“月账单3600美元”——这是不少OpenClaw用户面临的真实痛点。随着AI Agent的高频使用,Token消耗成本居高不下,成为制约高效使用的关键瓶颈。但同样是使用OpenClaw,部分用户能实现每月近乎零成本运行,核心秘诀就在于合理运用Token优化Skill。
7568 2