2

我想我只是缺少要搜索的关键字,但这在我脑海中燃烧:

如何在 select 语句中向 sum 函数添加条件,例如

从 db 中选择 sum(a), sum(b where c=1);?

这意味着,我想查看 b 列的总和和 b 列的总和,但只查看 b 列中 clomumn c 的值为 1 的记录。

heidi 的输出只是说“WHERE 附近的语法错误”。有没有其他办法?

在此先感谢和柏林的问候,约阿希姆

4

2 回答 2

3

确切的语法可能会因数据库引擎而异,但是它将遵循

SELECT
    sum(a),
    sum(CASE WHEN c = 1 THEN b ELSE 0 END)
FROM
    db
于 2013-07-18T16:15:57.330 回答
1
select sum(case when c=1 then b else 0 end)

当您需要对同一组数据进行大量聚合时,此技术很有用 - 您可以在不应用where过滤器的情况下查询整个表,并拥有一堆这些为您提供特定过滤器的聚合数据。

当您需要基于过滤器的大量计数时,它也很有用 - 您可以进行 1 或 0 的总和:

select sum(case when {somecondition} then 1 else 0 end)
于 2013-07-18T16:14:04.153 回答