作者bkk (.....)
看板Database
標題[SQL ] 算10題相加平均值
時間Mon Nov 8 11:10:04 2010
目前在做一個問卷分數的計算
問卷一共有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: 120.118.220.117
1F:推 yumark:可以寫個Function 綁在AVG的欄位上。 11/08 15:57
2F:→ yumark:然後再fn裡面加where not in 1 就可以了,這是MSSQL作法。 11/08 16:01
我有用AVG然後where 題目X>1 寫法如下:
UPDATE dbo.Q_問卷一 set 平均分數 =
(select AVG(題目1) from dbo.Q_問卷一 where 題目1>1)
不過這樣寫是計算所有作答者在題目1的平均(每一欄),
我還需要單筆作答者題目1到10的平均(每一列)
可能言不及意 不過還是謝謝大家的幫忙
3F:推 yumark:可以比較完整的去敘說資料特徵嗎?只丟你的update我無理解:( 11/09 01:30
4F:→ yumark:我比較想了解的是你的題目1是一條欄還是一個關聯表? 11/09 01:35
5F:→ yumark:仔細看了一下,你的題目一到十好像是欄位,然而你要求的是 11/09 01:49
6F:→ yumark:一個tuple的平均值,並且去除是1的項目是嗎? 11/09 01:58
7F:→ yumark:依我見解可能需要把每一列變成欄,然後where > 1 在AVG即可 11/09 02:08
※ 編輯: bkk 來自: 120.118.220.117 (11/10 12:48)