简体   繁体   English

总和返回空值的情况

[英]case when sums returning null values

I've written the following temp table to set up for a case when sum query. 我编写了以下临时表来设置总和查询的情况。

Total_count_package_5_15 and total_count_package_5_13 are both returning null values. Total_count_package_5_15和total_count_package_5_13都返回空值。 (They shouldn't be). (他们不应该)。 The data is properly set up in the preceding temporary table and I've confirmed that the data is there as expected. 数据已在前面的临时表中正确设置,并且我已确认数据已在预期的位置。

create temporary table screening_packages_count_2018 as

select screening_screen_date,
       count(case when screening_package = 1 then 1 end) as count_package_1,
       count(case when screening_package = 2 then 1 end) as count_package_2,
       count(case when screening_package = 3 then 1 end) as count_package_3,
       count(case when screening_package = 4 then 1 end) as count_package_4

from prod.leasing_fact

where date_part(year, screening_screen_date) = 2018

group by screening_screen_date

order by 1;


-- 5 AND 6 PACKAGE TOTALS BASED ON 2018 1-4 COUNTS

    select date_trunc('day', screening_screen_date)                                              as day,
           case
               when (sum(count_package_1) + sum(count_package_2) + sum(count_package_3) <= 75)
                   then (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) end as total_count_package_5_15,

           case
               when ((sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) >= 76 and
                     (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) <= 150)
                   then (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) end as total_count_package_5_13,

           0                                                                                     as total_count_package_6

    from screening_packages_count_2018

    where count_package_4 = 0
    group by day

I believe that there is an error in my case statement when using sums, but I'm not sure what is going on here. 我相信使用sums时case语句中有错误,但是我不确定这是怎么回事。 Thanks! 谢谢!

Try this... Put an ELSE 0 in the first Select for each Count() function . 尝试此操作...为每个Count() function的第一个Select放置一个ELSE 0 If there are any NULL values, you can't SUM NULL values. 如果有任何NULL值,则不能对SUM NULLSUM NULL

create temporary table screening_packages_count_2018 as

select screening_screen_date,
       count(case when screening_package = 1 then 1 ELSE 0 end) as count_package_1,
       count(case when screening_package = 2 then 1 ELSE 0 end) as count_package_2,
       count(case when screening_package = 3 then 1 ELSE 0 end) as count_package_3,
       count(case when screening_package = 4 then 1 ELSE 0 end) as count_package_4

from prod.leasing_fact

where date_part(year, screening_screen_date) = 2018

group by screening_screen_date

order by 1;


-- 5 AND 6 PACKAGE TOTALS BASED ON 2018 1-4 COUNTS

    select date_trunc('day', screening_screen_date)                                              as day,
           case
               when (sum(count_package_1) + sum(count_package_2) + sum(count_package_3) <= 75)
                   then (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) end as total_count_package_5_15,

           case
               when ((sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) >= 76 and
                     (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) <= 150)
                   then (sum(count_package_1) + sum(count_package_2) + sum(count_package_3)) end as total_count_package_5_13,

           0                                                                                     as total_count_package_6

    from screening_packages_count_2018

    where count_package_4 = 0
    group by day

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM