Oracle 中的 SUM(条件)?

问题描述 投票:0回答:2

我只是好奇:我知道类似的事情

SUM(string = 'anyString') over (partition by ANY_COLUMN)

SUM(string like 'anyWildcard%') over (partition by ANY_COLUMN)

正在 MySQL/MariaDB 中工作。 Oracle 中的等价物是什么?

sql oracle
2个回答
0
投票

ANSI/ISO SQL 标准方式是使用

case
表达式 进行条件聚合:

SUM(case when string = 'anyString' then 1 else 0 end) over (partition by ANY_COLUMN)

0
投票

MySQL/MariaDB 是唯一将布尔表达式视为 1 或 0 整数值的 SQL 数据库。这不是标准 SQL。但它允许使用诸如在布尔表达式上使用

SUM()
之类的技巧,这相当于计算表达式为 true 的行。

在 Oracle 或任何其他数据库中,您可以通过以下方式将布尔值映射到整数:

SUM(CASE string WHEN 'anyString' THEN 1 ELSE 0 END) ...
© www.soinside.com 2019 - 2024. All rights reserved.