SQL查询 - 如何分别计算行中的值?

时间:2010-03-29 00:31:43

标签: sql postgresql count

我有一张看起来像这样的表:

id | firstperson | secondperson
1 | jane doe |
2 | bob smith | margie smith
3 | master shifu | madame shifu
4 | max maxwell | 

如果secondpersons字段不是空白的话,我正在尝试计算所有第一人称+所有第二人员......有没有办法做到这一点?

5 个答案:

答案 0 :(得分:5)

SELECT SUM(CASE WHEN secondperson='' THEN 1 ELSE 2 END) FROM thetable;

答案 1 :(得分:2)

select sum(1 + case when secondperson <> '' then 1 else 0 end)
from MyTable

答案 2 :(得分:0)

我不确定这是否适用于Postgres,但在大多数数据库中,如果我们认为可能存在NULLS且问题确实是“如果secondperson字段不为NULL”,那么您必须明确包含NULLS在条件而不是空白值。

答案 3 :(得分:0)

SELECT SUM(在第二人=''或第二人为空,其余为0结束时为第二人的情况)从表格开始;

答案 4 :(得分:0)

假设空白表示NULL,那么在postgres中,就像在其他系统中一样,count(字段)将计算字段 如果它不为空

SELECT count(*)+count(secondperson) FROM thetable;

会给出想要的结果。 (SQL语法比缺少数据的自定义值更好。而且,关于主题,名称中包含数字的任何字段都是设计修订的候选者)