有一张表如下
name m1 m2 m3 m4
张三 NULL 2000 1500 2500
赵四 2000 NULL 3000 2000
王五 2500 2000 NULL 35001.如何求每个人的平均值,和总和.
2.如何求每个人不为null的平均值,和总和.
name m1 m2 m3 m4
张三 NULL 2000 1500 2500
赵四 2000 NULL 3000 2000
王五 2500 2000 NULL 35001.如何求每个人的平均值,和总和.
2.如何求每个人不为null的平均值,和总和.
解决方案 »
- 二条数据合成一条数据.那位告诉告诉我一下.
- access新问题,表中删除相同的数据,是都删掉一条也不留
- 求SQL语句
- 一个都不知道是哪种类型问题的问题!(感觉应该是行列转换的问题!)
- window server 2003上的sql2008执行master..xp_cmdshell 'wmic cpu get ProcessorId'报错
- 实时高发数据接收下来该如何处理
- 查询新用户注册后0-30或30-60天支出( 急!)
- SQL高手请进!!!!非常感谢~~~~~
- 应一些读者及网友要求:《一道褒贬不一的 SQL 考试题》原文及原题 ...
- Access --> SQL Server的转化后的问题?
- 这个更新怎么写?
- 在企业管理器中以表格形式改表数据,不能随意排序,有什么解决方案?
---------------------
sum(col)/count(*)2.如何求每个人不为null的平均值,和总和.
----------------
avg(col)
(inull(m1,0) + inull(m2,0) + inull(m3,0) + inull(m4,0))*1.0/4 平均值,
inull(m1,0) + inull(m2,0) + inull(m3,0) + inull(m4,0) 总和
from tb--2
2.如何求每个人不为null的平均值,和总和. select name ,
(inull(m1,0) + inull(m2,0) + inull(m3,0) + inull(m4,0))*1.0/(case when m1 is not null then 1 else 0 end + case when m2 is not null then 1 else 0 end + case when m3 is not null then 1 else 0 end + case when m4 is not null then 1 else 0 end) 平均值,
inull(m1,0) + inull(m2,0) + inull(m3,0) + inull(m4,0) 总和
from tb
(isnull(m1,0) + isnull(m2,0) + isnull(m3,0) + isnull(m4,0))*1.0/4 平均值,
isnull(m1,0) + isnull(m2,0) + isnull(m3,0) + isnull(m4,0) 总和
from tb--2
2.如何求每个人不为null的平均值,和总和. select name ,
(isnull(m1,0) + isnull(m2,0) + isnull(m3,0) + isnull(m4,0))*1.0/(case when m1 is not null then 1 else 0 end + case when m2 is not null then 1 else 0 end + case when m3 is not null then 1 else 0 end + case when m4 is not null then 1 else 0 end) 平均值,
isnull(m1,0) + isnull(m2,0) + isnull(m3,0) + isnull(m4,0) 总和
from tb
insert into @tmp
select
name,
m1=case m1 when null then 0 else m1 end,
m2=case m2 when null then 0 else m2 end,
m3=case m3 when null then 0 else m3 end,
m4=case m4 when null then 0 else m4 end
from 你的表
--1.如何求每个人的平均值,和总和. select 平均值=(m1+m2+m3+m4)/4,总和=m1+m2+m3+m4 from @tmp
set @sql = 'select name,('
select @sql=@sql++'isnull('+ name+',0)+'
from syscolumns where name! = 'name' and ID = object_id('统计信息')
set @sql = left(@sql,len(@sql)-1)+')*1.0/('
select @sql=@sql+'case when '+ name+' is not null then 1 else 0 end +'
from syscolumns where name! = 'name' and ID = object_id('统计信息')
set @sql=left(@sql,len(@sql)-1)+') 平均值,('
select @sql=@sql++'isnull('+ name+',0)+'
from syscolumns where name! = 'name' and ID = object_id('统计信息')
set @sql = left(@sql,len(@sql)-1)+') 总和 from 统计信息'
print @sql
exec(@sql)
2.如何求每个人不为null的平均值,和总和.
------------
NULL的不就转成0了吗 所以这两题目是一样的