資料庫基礎

成績表格的分數欄位中有 50、NULL、70、NULL、90、30 共6個值。依序列出 SELECT COUNT(*), COUNT(分數), AVG(分數) FROM 成績 之結果的是下列何者?

  1. A6, 6, 40
  2. B6, 4, 40
  3. 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。
練習這個領域 前往領域頁面

相關計算工具

資料庫基礎的其他題目

  1. 想從員工表格(員工編號, 部門, 薪資)中,求出各部門平均薪資在300以上的部門及其平均薪資。正確的SQL敘述是下列何者?
  2. 銷售表格(門市, 金額)中有(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900)共7筆資料列。SELECT 門市, SUM(金額) FROM 銷售 GROUP BY 門市 HAVING SUM(金額) >= 1000 的結果有幾筆資料列?
  3. 員工表格(姓名, 部門, 薪資)有8筆資料列,各部門的薪資為:業務 320、280、350,研發 400、310,總務 260、300,企劃 330。SELECT 部門, COUNT(*) FROM 員工 WHERE 薪資 >= 300 GROUP BY 部門 HAVING COUNT(*) >= 2 的結果有幾筆資料列?
  4. 員工表格(員工編號, 姓名, 部門編號)有4筆資料列,部門編號依序為10、20、10、NULL。部門表格(部門編號, 部門名稱)有部門編號為10、20、30的3筆資料列。SELECT 員工.姓名, 部門.部門名稱 FROM 員工 INNER JOIN 部門 ON 員工.部門編號 = 部門.部門編號 的結果有幾筆資料列?
  5. 員工表格(員工編號, 姓名, 部門編號)有5筆資料列,部門編號依序為10、20、10、NULL、NULL。部門表格(部門編號, 部門名稱)有部門編號為10、20、30的3筆資料列。SELECT 部門.部門名稱, 員工.姓名 FROM 部門 LEFT OUTER JOIN 員工 ON 部門.部門編號 = 員工.部門編號 的結果有幾筆資料列?