免費開始練習
調查局三等申論題 108年 [資訊科學組] 資料庫應用

第 一 題

📖 題組:
假設資料庫系統中定義了老師的授課資料,其中 instructor 表格定義了老師的教職員編號(IID)、姓名(name)和系別(dname)等三個屬性,而 teach 表格定義了老師的教職員編號(IID)、所教授的課程代碼(CID)和授課學年度。兩個表格如下所列,注意所有屬性皆為字串型態,且底線標示了各表格的主鍵(primary key): instructor (IID, name, dname) teach (IID, CID, year)
📝 此題為申論題,共 3 小題

小題 (一)

請寫出 SQL 查詢句(query statement),列出每個系的系名以及該系的授課老師個數。(10 分)

思路引導 VIP

本題關鍵在於同時涉及系名分組與授課紀錄的統計。思考時應注意使用 JOIN 結合兩張表格,利用 GROUP BY 對系所進行分組,並特別留意一位老師可能教授多門課程,需使用 COUNT(DISTINCT IID) 避免重複計算人數。

🤖
AI 詳解
AI 專屬家教

【解題思路】使用 LEFT JOIN 確保列出所有系所,並以 GROUP BY 搭配 COUNT(DISTINCT) 計算各系不重複的授課老師人數。 【解答】 SQL 查詢語句如下:

小題 (二)

請寫出 SQL 查詢句,列出名為「張三」的老師,於 106 學年度所有開設的課程代碼。(10 分)

思路引導 VIP

本題測驗基本的跨表關聯查詢(JOIN)與條件過濾能力。解題時應先確定目標欄位為課程代碼(CID),接著透過教職員編號(IID)將 instructor 與 teach 兩表進行內部連接(INNER JOIN),最後加上 WHERE 子句過濾姓名與學年度條件即可。

🤖
AI 詳解
AI 專屬家教

【解題思路】使用 INNER JOIN 關聯兩表,並利用 WHERE 子句進行字串條件過濾。 【詳解】 目標欄位:teach 表格的課程代碼 (CID)

小題 (三)

請問以下 SQL 查詢句是為了找出什麼樣的資料?請用中文詳述其資料語意(semantics):(10 分) SELECT IID, CID FROM teach WHERE year = ‘107’ and IID in(SELECT IID FROM instructor WHERE dname = ‘資工’);

思路引導 VIP

面對 SQL 語意解釋題,應採取「由內而外、先條件後結果」的拆解法。首先解析子查詢篩選出的實體特徵(如:資工系的老師),接著結合主查詢的過濾條件(如:107學年度),最後確認 SELECT 子句要求的輸出欄位(如:教職員編號與課程代碼),將其融合成一句通順的中文業務邏輯。

🤖
AI 詳解
AI 專屬家教

此 SQL 查詢句的資料語意為:找出「所屬系別為『資工』系,且在『107』學年度有授課紀錄的所有老師之教職員編號(IID)與所教授的課程代碼(CID)」。 詳細語法解析如下:

  1. 子查詢 (SELECT IID FROM instructor WHERE dname = '資工'):先從 instructor 表格中,篩選出系別(dname)為「資工」的所有教職員編號。

升級 VIP 解鎖