資料庫基礎
成績表格的分數欄位中有 50、NULL、70、NULL、90、30 共6個值。依序列出 SELECT COUNT(*), COUNT(分數), AVG(分數) FROM 成績 之結果的是下列何者?
- A6, 6, 40
- B6, 4, 40
- C6, 4, 60
查看答案與解析
正確答案:C. 6, 4, 60
COUNT(*)不論是否含NULL都會計算資料列數,因此為6。像COUNT(分數)這樣指定欄位時,只計算該欄位不是NULL的資料列,因此為4。AVG(分數)是把4個非NULL值的總和 50 + 70 + 90 + 30 = 240,除以非NULL值的個數4,得到 240 ÷ 4 = 60。要注意這與總和除以全部資料列數的 SUM(分數) / COUNT(*) = 240 ÷ 6 = 40 不同。若想把NULL當作0分,要先以 COALESCE(分數, 0) 替換再彙總。
- A. 這是把NULL視為0時的結果。COUNT(分數)不計算NULL的資料列。
- B. 這是把AVG誤當成總和除以全部資料列數6的值。
- C. 正確。資料列數為6,非NULL值有4個,其平均為 240 ÷ 4 = 60。