我想我只是缺少要搜索的关键字,但这是我的想法:
如何在select-statement中添加条件到sum-function,如
从db中选择sum(a),sum(b,其中c = 1);?
这意味着,我希望看到列b的总和和列b的总和,但只能看到列b中的记录,其中clomumn c的值为1.
heidi的输出只是说“WHERE附近的坏蛋白”。可能有其他方式吗?
提前感谢柏林,joachim提出的最好的问候
答案 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)