我试图找到列的平均值。我想删除0值但使用SQL Server 2008编程保留空白。请帮忙
答案 0 :(得分:2)
使用AVG()
如果你想忽略0并包含"空白" (如果你的意思是NULL
)到基地,你可以利用这个功能的以下特征:
AVG()通过将这些值的总和除以非空值的计数来计算一组值的平均值。
那样
SELECT AVG(
CASE WHEN [column] = 0 THEN NULL -- Skip 0 when calculate the average
WHEN [column] IS NULL THEN 0 -- Include blank as 0 value
ELSE [column] END) AS Average
FROM [table]
答案 1 :(得分:0)
我猜是这样的事情:
select sum(distinct t1.val)/( count(distinct t2.id)+ count(distinct t3.id))
from mytable t1
join mytable t2
on 1=1
join mytable t3
on 1=1
where not t2.val = 0 and (t3.val is null)