求和与空值和自定义桶

问题描述 投票:0回答:1

如何(在C1,C2,C3值),如果一个或多个字段为空加三个值?我想它添加空值为零,并把总在一个新的领域四强。现在我的查询只返回null如果值中的至少一个为空。

例如,这是发生了什么(二排,字段four出现空场,因为二是空)

1 |   3  |   5  |   9
2  | NULL |   3   |  NULL
8  |   1  |    1  |   10

例如,这就是我想在我的回归集发生

1 |   3  |   5  |   9
2  | NULL |   3   |  5
8  |   1  |    1  |   10

理想情况下,我想也然后第五列这些值添加到组成的说“1-3”,“4-6”桶,“7-10”的基础上在字段4的值。诚然,我不知道如何做到这一点的一部分 - 任何帮助或建议将是有益的。

1 |   3  |   5  |   9  | 7-10
2  | NULL |   3   |  5  | 4-6
8  |   1  |    1  |   10  | 7-10

因为我在PostgreSQL的工作,所以我猜我只是拧起来的东西简单,它一直是几年。我查询的任何帮助下将是非常赞赏。

SELECT "FIELD ONE", "FIELD TWO", "FIELD THREE", "FIELD ONE + FIELD TWO + FIELD THREE" AS "TOTAL FIELD" FROM "Table1";

sql postgresql
1个回答
0
投票

一种方法是使用coalesce()

select t.*,
       (coalesce(field1, 0) + coalesce(field2, 0) + coalesce(field3, 0)
       ) as total
from t;

然后你可以使用一个case表达。但是,我喜欢使用横向连接,以及:

select t.*,
       (case when total <= 3 then '1-3'
             when total <= 6 then '4-6'
             else '7-10'
        end) as range
from t left join lateral
     (select sum(field) as total
      from (values (field1), (field2), (field3)) v(field)
     ) s
© www.soinside.com 2019 - 2024. All rights reserved.