作者grence (多想两分钟 = =")
看板Database
标题Re: [MSSQL] 算10题相加平均值
时间Wed Nov 10 11:35:04 2010
declare @t table(t1 int, t2 int, t3 int, t4 int
, sum decimal, count decimal, avg decimal(5,2))
insert @t(t1,t2,t3,t4) values(1,2,3,4)
insert @t(t1,t2,t3,t4) values(1,2,1,4)
insert @t(t1,t2,t3,t4) values(1,1,3,4)
insert @t(t1,t2,t3,t4) values(1,2,3,1)
declare @sum decimal, @count decimal
update @t set
@sum=0, @count=0,
@sum = @sum+ case when t1<>1 then t1 else 0 end,
@sum = @sum+ case when t2<>1 then t2 else 0 end,
@sum = @sum+ case when t3<>1 then t3 else 0 end,
@sum = @sum+ case when t4<>1 then t4 else 0 end,
@count = @count+ case when t1<>1 then 1 else 0 end,
@count = @count+ case when t2<>1 then 1 else 0 end,
@count = @count+ case when t3<>1 then 1 else 0 end,
@count = @count+ case when t4<>1 then 1 else 0 end,
sum=@sum, count=@count, avg=@sum/@count
from @t
select * from @t
我觉得 table设计不是很好,连 PK都没有...
※ 引述《bkk (.....)》之铭言:
: 目前在做一个问卷分数的计算
: 问卷一共有10题 分数个别是
: 非常不满意:1
: 不满意:2
: 尚可:3
: 满意:4
: 非常满意:5
: 资料库栏位则有题目1到题目10以及平均分数
: 我现在想要把10题的分数加起来後算平均值
: 目前的SQL语法如下
: UPDATE dbo.Q_问卷一 set 平均分数 =
: (题目1+ 题目2+题目3+题目4+题目5+题目6+题目7+题目8+题目9+题目10)/10
: 问题来了 现在我要把分数为1的题目去掉 不纳入平均值计算
: 例如:题目1为1 那平均分数就是 (题目2+到题目10)/9
: 题目1跟2为1 那平均分数就是 (题目3+到题目10)/8
: 我有认真想过 不过实在是没概念
: 我甚至想说用土法炼钢的方式 写好几百种当题目x=1的条件去判断(实在是蠢的可以= =)
: 拜托大家帮个忙了 感谢!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.152.24
1F:推 bkk:谢谢喔 栏位里面有编号及序号 只是没打出来 11/10 11:46
2F:→ grence:那就是发问者的问题了。 11/10 21:50
3F:推 bkk:恩恩 是我疏忽 感谢大家帮忙 11/11 00:08
4F:→ athelok:这个问题没必要用到PK吧 发问者有什麽问题? 11/11 09:14
5F:→ grence:没有PK,行列是要怎麽转 11/11 19:57
我觉得设计良好的资料表在写程式的时候会有提示效果,
设计资料表这步骤会强迫我在写程式之前先想好怎麽写。
这个问题我想了几个方法都不太顺手,
後来发现是少了pk,习惯到失去还没马上发觉…
一个问卷题目存在一个栏位,
这样设计的资料表也不够泛用,换份问卷又要重开一次。
※ 编辑: grence 来自: 123.194.23.13 (11/12 20:18)