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)
这些列的值可以0是5.
如何选择这些字段的平均值,但只比较值大于的字段0.
因此,如果列值1,3,5-平均必须是3.如果值是0,3,5-平均必须是4.
这有点快速和肮脏,但它会工作......
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)