SQL Server 2012 中的平均值和大小写
Average and case in SQL Server 2012
我想要列大于零时的平均值。
Select Avg(Case when Column > 0 then Column else 0 end) as Avg
但恐怕 else
子句不正确。我想忽略平均值中的零值。
从 case statement
中删除 else
部分,因此小于 1
的值将是 NULL
.
Null
值将被 Avg aggregate
消除。因此,您将获得大于 0
的值的平均值。试试这个。
Select Avg(Case when [Column]>0 then [Column] end) as [Avg]
演示版
case statement
中没有 else
部分(预期平均值)
SELECT Avg(CASE WHEN a > 0 THEN a END) [Avg]
FROM (SELECT 2 a UNION ALL SELECT 2 UNION ALL SELECT -1) bb
结果:2
与 else
部分在 case statement
.
SELECT Avg(CASE WHEN a > 0 THEN a ELSE 0 END) [Avg]
FROM (SELECT 2 a UNION ALL SELECT 2 UNION ALL SELECT -1) bb
结果:1
我想要列大于零时的平均值。
Select Avg(Case when Column > 0 then Column else 0 end) as Avg
但恐怕 else
子句不正确。我想忽略平均值中的零值。
从 case statement
中删除 else
部分,因此小于 1
的值将是 NULL
.
Null
值将被 Avg aggregate
消除。因此,您将获得大于 0
的值的平均值。试试这个。
Select Avg(Case when [Column]>0 then [Column] end) as [Avg]
演示版
case statement
中没有 else
部分(预期平均值)
SELECT Avg(CASE WHEN a > 0 THEN a END) [Avg]
FROM (SELECT 2 a UNION ALL SELECT 2 UNION ALL SELECT -1) bb
结果:2
与 else
部分在 case statement
.
SELECT Avg(CASE WHEN a > 0 THEN a ELSE 0 END) [Avg]
FROM (SELECT 2 a UNION ALL SELECT 2 UNION ALL SELECT -1) bb
结果:1