15 要從選課表中查詢出選修 2 科及 2 科以上的學生學號之 SQL 敘述,下列何者正確?
(A) SELECT 學號,count(*)FROM 選課表 Having COUNT(*)>=2
(B) SELECT 學號,count(*)FROM 選課表 GROUP BY 學號 Where COUNT(*)>=2
(C) SELECT 學號,count(*)FROM 選課表 GROUP BY 學號 Having COUNT(*)>=2
(D) SELECT 學號,count(*)FROM 選課表 Where COUNT(*)>=2
答案:登入後查看
統計: A(1), B(1), C(8), D(1), E(0) #2457511
統計: A(1), B(1), C(8), D(1), E(0) #2457511
詳解 (共 5 筆)
#7281901
(A)
SELECT 學號,COUNT(*)
FROM 選課表
Having COUNT(*)>=2 =>有聚合必須要有GROUP BY、缺GROUP BY
ㅤㅤ
(B)
SELECT 學號,COUNT(*)
FROM 選課表
GROUP BY 學號 =>WHERE要在GROUP BY前面一行
WHERE COUNT(*)>=2 =>COUNT(*)>=2要接在HAVING後面才對
ㅤㅤ
(C)
SELECT 學號,COUNT(*) =>列出所要顯示的欄位名稱
FROM 選課表 =>來自選課這個表格
GROUP BY 學號 =>將相同學號的人分組合併
HAVING COUNT(*)>=2 =>計算並篩選出選修有>=2堂的學號
ㅤㅤ
(D)
SELECT 學號,COUNT(*)
FROM 選課表
WHERE COUNT(*)>=2 =>WHERE不能直接接聚合函數、缺GROUP BY、WHERE換HAVING
ㅤㅤ
ㅤㅤ
只要SELECT中有出現聚合函數(SUM、COUNT、AVG...)就必須有GROUP BY
SQL的排序如下:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
ㅤㅤ
ㅤㅤ
用(C)來對以下表格進行查詢:
ㅤㅤ
| 課程表 | |
|---|---|
| 課程 | 學號 |
| 國文 | A、B、C |
| 英文 | A、C |
| 數學 | A、D |
| 自然 | B、D、E |
| 社會 | F、G |
結果:
ㅤㅤ
| 學號 | COUNT(*) |
|---|---|
| A | 3 |
| B | 2 |
| C | 2 |
| D | 2 |
0
0