地特三等申論題
110年
[統計] 資料處理
第 一 題
📖 題組:
在 Microsoft Access 中,建有「老師資料表」與「課程資料表」,兩個表格皆有四個欄位,內容如下: 老師資料表 老師 ID | 姓名 | 電話 | 地址 1 | 張三 | 123 | 臺中市 2 | 王武 | 456 | 高雄市 3 | 劉丹 | 897 | 桃園市 5 | 高樂 | 756 | 臺南市 課程資料表 課程 ID | 課程名稱 | 老師 ID | 上課教室 1 | 國文 | 1 | 文學大樓 3 | 數學 | 1 | 理學大樓 4 | 物理 | 4 | 理學大樓 6 | 電子學 | 3 | 科技大樓 請寫出下列 SQL 查詢指令的輸出結果:
在 Microsoft Access 中,建有「老師資料表」與「課程資料表」,兩個表格皆有四個欄位,內容如下: 老師資料表 老師 ID | 姓名 | 電話 | 地址 1 | 張三 | 123 | 臺中市 2 | 王武 | 456 | 高雄市 3 | 劉丹 | 897 | 桃園市 5 | 高樂 | 756 | 臺南市 課程資料表 課程 ID | 課程名稱 | 老師 ID | 上課教室 1 | 國文 | 1 | 文學大樓 3 | 數學 | 1 | 理學大樓 4 | 物理 | 4 | 理學大樓 6 | 電子學 | 3 | 科技大樓 請寫出下列 SQL 查詢指令的輸出結果:
📝 此題為申論題,共 4 小題
小題 (一)
SELECT 課程資料表.課程 ID, 課程資料表.課程名稱, 老師資料表.姓名, 課程資料表.上課教室, 老師資料表.電話, 老師資料表.地址 FROM 老師資料表 INNER JOIN 課程資料表 ON 老師資料表.老師 ID = 課程資料表.老師 ID ORDER BY 課程資料表.課程 ID(5 分)
思路引導 VIP
看到 SQL 查詢題,首先確認 JOIN 的類型為 INNER JOIN(內部連接),這代表只會選出兩個資料表在 ON 條件(老師 ID)上完全吻合的資料列。接著再依據 SELECT 的欄位順序以及 ORDER BY 的排序條件建立最終的結果表格。
小題 (二)
SELECT 課程資料表.課程 ID, 課程資料表.課程名稱, 老師資料表.姓名, 課程資料表.上課教室, 老師資料表.電話, 老師資料表.地址 FROM 老師資料表 RIGHT JOIN 課程資料表 ON 老師資料表.老師 ID = 課程資料表.老師 ID ORDER BY 課程資料表.課程 ID(7 分)
思路引導 VIP
看到 RIGHT JOIN 首先要確認「右表(即 JOIN 後面的資料表)」為何者。本題右表為「課程資料表」,故必須保留右表的所有紀錄,再透過「老師 ID」與左表匹配,若左表無對應資料,則該欄位填入 Null(空值),最後確認 SELECT 選取的欄位順序與 ORDER BY 排序條件。
小題 (三)
SELECT 課程資料表.課程 ID, 課程資料表.課程名稱, 老師資料表.姓名, 課程資料表.上課教室, 老師資料表.電話, 老師資料表.地址 FROM 老師資料表 LEFT JOIN 課程資料表 ON 老師資料表.老師 ID = 課程資料表.老師 ID ORDER BY 課程資料表.課程 ID(8 分)
思路引導 VIP
看到這題先確認 JOIN 類型為「LEFT JOIN」,這代表左表(老師資料表)的所有紀錄都必須保留,若右表(課程資料表)無對應紀錄則相關欄位需補上 Null。最後再依據「ORDER BY 課程 ID」進行升冪排序,需特別注意 Null 值在 Access 升冪排序中預設會排在最前面。
小題 (四)
SELECT 課程資料表.課程名稱, 課程資料表.上課教室 FROM 課程資料表 UNION SELECT 老師資料表.姓名, 老師資料表.地址 FROM 老師資料表(10 分)
思路引導 VIP
看到 SQL 的 UNION 運算子,首先要想到它的功能是將兩個 SELECT 查詢的結果集「上下合併」。解題時應先分別寫出兩個 SELECT 語句的查詢結果,接著檢查是否有完全相同的紀錄(UNION 預設會剔除重複列),最後將資料合併,並注意輸出的欄位名稱通常預設為第一個 SELECT 語句的欄位名稱。