資料庫基礎
考試表格的分數欄位中有 80、NULL、70、90 共4個值(NULL表示未應考)。SELECT AVG(分數) FROM 考試 的結果是下列何者?
- A60
- B80
- CNULL
查看答案與解析
正確答案:B. 80
SQL的聚合函數(SUM、AVG、MAX、MIN,以及指定欄位的COUNT)會忽略NULL來計算。AVG(分數)是3個非NULL值的平均,即 (80 + 70 + 90) ÷ 3 = 240 ÷ 3 = 80。若把NULL視為0並除以4,會得到 240 ÷ 4 = 60,但AVG並不這樣計算。若想把未應考者以0分計入平均,要像 AVG(COALESCE(分數, 0)) 這樣,先把NULL換成0再彙總。此外,若所有值都是NULL,AVG的結果為NULL。
- A. 這是把NULL視為0並除以4的值。AVG會忽略NULL。
- B. 正確。這是去除NULL後3個值的平均,240 ÷ 3 = 80。
- C. 只要有一個NULL結果就成為NULL的是 + 之類的運算。聚合函數會忽略NULL。