[MSSQL] 算10題相加平均值

看板Database作者 (.....)時間15年前 (2010/11/08 11:10), 編輯推噓2(205)
留言7則, 1人參與, 最新討論串1/2 (看更多)
目前在做一個問卷分數的計算 問卷一共有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

11/08 15:57, , 1F
可以寫個Function 綁在AVG的欄位上。
11/08 15:57, 1F

11/08 16:01, , 2F
然後再fn裡面加where not in 1 就可以了,這是MSSQL作法。
11/08 16:01, 2F
我有用AVG然後where 題目X>1 寫法如下: UPDATE dbo.Q_問卷一 set 平均分數 = (select AVG(題目1) from dbo.Q_問卷一 where 題目1>1) 不過這樣寫是計算所有作答者在題目1的平均(每一欄), 我還需要單筆作答者題目1到10的平均(每一列) 可能言不及意 不過還是謝謝大家的幫忙

11/09 01:30, , 3F
可以比較完整的去敘說資料特徵嗎?只丟你的update我無理解:(
11/09 01:30, 3F

11/09 01:35, , 4F
我比較想了解的是你的題目1是一條欄還是一個關聯表?
11/09 01:35, 4F

11/09 01:49, , 5F
仔細看了一下,你的題目一到十好像是欄位,然而你要求的是
11/09 01:49, 5F

11/09 01:58, , 6F
一個tuple的平均值,並且去除是1的項目是嗎?
11/09 01:58, 6F

11/09 02:08, , 7F
依我見解可能需要把每一列變成欄,然後where > 1 在AVG即可
11/09 02:08, 7F
※ 編輯: bkk 來自: 120.118.220.117 (11/10 12:48)
文章代碼(AID): #1CrseFly (Database)
文章代碼(AID): #1CrseFly (Database)