从db中选择sum(a),sum(b,其中c = 1); select语句中的sql条件

时间:2013-07-18 16:12:45

标签: sql select

我想我只是缺少要搜索的关键字,但这是我的想法:

如何在select-statement中添加条件到sum-function,如

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

这意味着,我希望看到列b的总和和列b的总和,但只能看到列b中的记录,其中clomumn c的值为1.

heidi的输出只是说“WHERE附近的坏蛋白”。可能有其他方式吗?

提前感谢柏林,joachim提出的最好的问候

2 个答案:

答案 0 :(得分:2)

确切的语法可能因数据库引擎而异,但它将与

一致
SELECT
    sum(a),
    sum(CASE WHEN c = 1 THEN b ELSE 0 END)
FROM
    db

答案 1 :(得分:0)

select sum(case when c=1 then b else 0 end)

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

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

select sum(case when {somecondition} then 1 else 0 end)