想要计算出表中几列非空数据的平均值,应该怎样写sql 效果如图

joyhahaha 2017-12-16 10:41:38
...全文
484 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
joyhahaha 2017-12-16
  • 打赏
  • 举报
回复
改好了。。。
joyhahaha 2017-12-16
  • 打赏
  • 举报
回复
要是给这个平均数起名 as什么应该写在哪SELECT sum(isnull([ceshi].[dbo].[T_FK].A,0)+isnull([ceshi].[dbo]. [T_FK].B,0)+isnull([ceshi].[dbo].[T_FK].C,0))/sum((case when [ceshi].[dbo].[T_FK].A is null then 0 else 1 end)+(case when [ceshi].[dbo].[T_FK].B is null then 0 else 1 end)+(case when [ceshi].[dbo].[T_FK].C is null then 0 else 1 end)) FROM [ceshi].[dbo].[T_FK] where [ceshi].[dbo].[T_FK].projectId = 'T2000' 我这个后面加了一个where 约束,但是一写 as就错了
二月十六 2017-12-16
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([A] decimal(18,7),[B] decimal(18,7),[C] int)
Insert #T
select null,1,null union all
select 1,0.5,null union all
select 0.8,null,4
Go
--测试数据结束
SELECT SUM(ISNULL(A, 0) + ISNULL(B, 0) + ISNULL(C, 0))
/ SUM(CASE WHEN A IS NOT NULL THEN 1
ELSE 0
END + CASE WHEN B IS NOT NULL THEN 1
ELSE 0
END + CASE WHEN C IS NOT NULL THEN 1
ELSE 0
END)
FROM #T



快溜 2017-12-16
  • 打赏
  • 举报
回复
sum(isnull(A,0)+isnull(B,0)+isnull(C,0))/sum((case when A is null then 0 else 1 end)+(case when B is null then 0 else 1 end)+(case when C is null then 0 else 1 end))

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧