首页 > 解决方案 > 返回字段的总计 - 按条件分组?

问题描述

假设我有以下 SQL 语句......

SELECT amount FROM exampleTable

很简单,这给了我示例表中的每一行(只是金额字段)......但我有点想要一些不同的东西......

而不是取回所有的行,我基本上想要两行。我想要的是价值为正的“金额”总和的总和,以及它为负的总和。我还想返回每个的计数。

那可行吗?如果是这样,有人可以向我展示我如何做到这一点的例子吗?

在“google it”答案出现之前……我对 SQL 很陌生——我一直在研究 GROUP BY、sum 等——我相当有信心我需要这些——但老实说,我没有t 让它真正起作用 - 如果有人能告诉我如何让它起作用 - 那么我可能真的学到了一些东西!

标签: mysqlsql

解决方案


使用条件聚合

SELECT sum(case when amount < 0 then amount else 0 end) negtotal,  
       sum(case when amount > 0 then amount else 0 end) postotal,
       sum(case when amount < 0 then 1 else 0 end) negcount,  
       sum(case when amount > 0 then 1 else 0 end) poscount
FROM exampleTable;

推荐阅读