根据PostgreSQL中的条件将值插入新数组列

时间:2018-06-20 23:10:37

标签: sql postgresql greenplum

我有什么

  id  test_1   test_2  test_3        Indicator_column
  1     651       40     0.4      {test_1,test_2,test_3}
  1     625       80     0.6      {test_1,test_2,test_3}
  1     510       60     0.78     {test_1,test_2,test_3}
  1     710       90     0.4      {test_1,test_2,test_3}
  1     550       Null   0.2      {test_1,test_2,test_3}

我需要什么:

我在表格和excel中都有这些条件

1)如果测试1的值介于650-800之间,则1否则为0

2)如果测试2的值大于80,则返回1,否则返回0

3)如果测试3的值大于0.5,则返回1,否则返回0

    id  test_1   test_2  test_3        Indicator_column        exclude_flag
     1     651       40     0.4      {test_1,test_2,test_3}      {1,0,0}
     1     625       80    0.6       {test_1,test_2,test_3}      {0,0,1}
     1     510       60     0.78     {test_1,test_2,test_3}      {0,0,1}
     1     710       90     0.4      {test_1,test_2,test_3}      {1,1,0}
     1     550       Null   0.2      {test_1,test_2,test_3}      {0,0,0}

1 个答案:

答案 0 :(得分:3)

您可以使用基于ARRAY[]的元素(如下所示)构造一个CASE

select
  id, test_1, test_2, test_3, indicator_column,
  ARRAY[
    case when test_1 between 650 and 800 then 1 else 0 end,
    case when test_2 > 80 then 1 else 0 end,
    case when test_3 > 0.5 then 1 else 0 end,
  ] as exclude_flag
from t