gpt4 book ai didi

SQL 对每行的多列进行平均,其中包含空值

转载 作者:行者123 更新时间:2023-12-02 23:33:35 25 4
gpt4 key购买 nike

我有一个这样的表:

|Quality|Schedule|Cost Control|
-------------------------------
|7 | 8.5 |10 |
|NULL | 9 |NULL |

我需要计算同一个表中每一行的平均值,如下所示:

|Quality|Schedule|Cost Control|AVG|
----------------------------------
|7 | 8.5 |10 |8.5|
|NULL | 9 |NULL |9 |

我使用以下代码完成了:

SELECT r.Quality, r.Schedule, r.CostControl, 
((coalesce(r.quality,0)+
coalesce(r.schedule,0)+
coalesce(r.CostControl,0)/3) as Average
FROM dbo.Rating r

给出下表:

|Quality|Schedule|Cost Control|AVG|
----------------------------------
|7 | 8.5 |10 |8.5|
|NULL | 9 |NULL |3 |

我知道问题是除数在我的 select 语句中被硬编码,但我不知道如何使其可变。我尝试使用 case 语句来选择附加列:

select Count(case when(r.quality) > 0 then 1 else 0 end + 
case when (r.Schedule) > 0 then 1 else 0 end +
case when (r.CostControl) > 0 then 1 else 0 end)

但这只给了我一个值。我没有想法并且面临着非常紧迫的截止日期,因此我们将不胜感激任何帮助。

最佳答案

不要除以 3,而是使用

(CASE WHEN Quality IS NULL THEN 0 ELSE 1 END + 
CASE WHEN Schedule IS NULL THEN 0 ELSE 1 END +
CASE WHEN [Cost Control] IS NULL THEN 0 ELSE 1 END)

关于SQL 对每行的多列进行平均,其中包含空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com