我想我只是缺少要搜索的关键字,但这在我脑海中燃烧:
如何在 select 语句中向 sum 函数添加条件,例如
从 db 中选择 sum(a), sum(b where c=1);?
这意味着,我想查看 b 列的总和和 b 列的总和,但只查看 b 列中 clomumn c 的值为 1 的记录。
heidi 的输出只是说“WHERE 附近的语法错误”。有没有其他办法?
在此先感谢和柏林的问候,约阿希姆
确切的语法可能会因数据库引擎而异,但是它将遵循
SELECT
sum(a),
sum(CASE WHEN c = 1 THEN b ELSE 0 END)
FROM
db
select sum(case when c=1 then b else 0 end)
当您需要对同一组数据进行大量聚合时,此技术很有用 - 您可以在不应用where
过滤器的情况下查询整个表,并拥有一堆这些为您提供特定过滤器的聚合数据。
当您需要基于过滤器的大量计数时,它也很有用 - 您可以进行 1 或 0 的总和:
select sum(case when {somecondition} then 1 else 0 end)