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

Oracle中SUM(condition)的等价实现?替代MySQL条件求和窗口函数

Oracle中对应MySQL/MariaDB条件求和窗口函数的等价写法

在Oracle中,由于数据库不会自动将布尔表达式结果转换为整数(MySQL/MariaDB会把true转为1、false转为0),所以需要用CASE表达式显式处理条件判断,再传入SUM窗口函数。

1. 精确匹配场景(对应SUM(string = 'anyString') OVER (...))

等价写法:

SUM(CASE WHEN string = 'anyString' THEN 1 ELSE 0 END) OVER (PARTITION BY ANY_COLUMN)

2. 模糊匹配场景(对应SUM(string LIKE 'anyWildcard%') OVER (...))

等价写法:

SUM(CASE WHEN string LIKE 'anyWildcard%' THEN 1 ELSE 0 END) OVER (PARTITION BY ANY_COLUMN)

原理说明:
通过CASE WHEN语句对目标条件进行判断,满足条件时返回1,不满足时返回0,再用SUM函数对这些1和0进行窗口内的求和,最终实现和MySQL/MariaDB写法完全一致的统计效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:32:32