从SQL Server中的3列获得平均值

bar*_*ian 3 sql t-sql sql-server-2005

smallint在SQL Server 2005中有一个包含3列()的表.

Table Ratings
ratin1 smallint,
ratin2 smallint
ratin3 smallint
Run Code Online (Sandbox Code Playgroud)

这些列的值可以05.

如何选择这些字段的平均值,但只比较值大于的字段0.

因此,如果列值1,3,5-平均必须是3.如果值是0,3,5-平均必须是4.

mwi*_*ahl 9

这有点快速和肮脏,但它会工作......

SELECT (ratin1 + ratin2 + ratin3) / 
((CASE WHEN ratin1 = 0 THEN 0 ELSE 1 END) + 
(CASE WHEN ratin2 = 0 THEN 0 ELSE 1 END) + 
(CASE WHEN ratin3 = 0 THEN 0 ELSE 1 END) +
(CASE WHEN ratin1 = 0 AND ratin2 = 0 AND ratin3 = 0 THEN 1 ELSE 0 END) AS Average
Run Code Online (Sandbox Code Playgroud)