普考申論題
114年
[統計] 資料處理概要
第 二 題
📖 題組:
資料庫中有一個資料表 Books,包含以下欄位 BookID(書籍編號)、Title(書名)、Author(作者)、Publisher(出版社)、PubYear(出版年份)、ISBN(國際標準書號),其中 BookID 為資料表的主鍵。
資料庫中有一個資料表 Books,包含以下欄位 BookID(書籍編號)、Title(書名)、Author(作者)、Publisher(出版社)、PubYear(出版年份)、ISBN(國際標準書號),其中 BookID 為資料表的主鍵。
📝 此題為申論題,共 3 小題
小題 (二)
請說明下列 SQL 語法之查詢過濾條件與輸出欄位為何?(10 分)
SELECT Title, Author, Publisher
FROM Books
WHERE PubYear IN
(SELECT PubYear
FROM Books
WHERE Author = '村上春樹' AND Publisher = '時報出版公司');
SELECT Title, Author, Publisher
FROM Books
WHERE PubYear IN
(SELECT PubYear
FROM Books
WHERE Author = '村上春樹' AND Publisher = '時報出版公司');
思路引導 VIP
面對SQL語義解析題,考生應採取「由內而外(Bottom-up)」的拆解法。首先檢視外層 SELECT 確定『輸出欄位』,接著拆解 WHERE 子句中的巢狀子查詢(Subquery),先釐清子查詢回傳的集合為何,再解釋外層 IN 運算子如何利用該集合進行比對,最後將兩段邏輯結合成通順的『過濾條件』說明。
小題 (一)
請寫一個 SQL 查詢,尋找張曼娟於 2020 年出版的書籍名稱與出版社。(10 分)
思路引導 VIP
面對基礎 SQL 查詢題,應遵循「投影(SELECT)→ 來源(FROM)→ 條件(WHERE)」的三步邏輯。先釐清題目要求顯示的欄位(Title、Publisher),接著確認資料表名稱(Books),最後利用 AND 邏輯運算子串接多個篩選條件(作者與年份),並注意字串需使用單引號包覆。
小題 (三)
請以 JOIN 指令,利用自我關連的概念,改寫上面的查詢。(20 分)
思路引導 VIP
考生看到「自我關連(Self-Join)」與「改寫 JOIN 指令」,應立刻聯想到必須替同一個資料表取兩個不同的「別名(Alias)」,將其視為兩個獨立的邏輯表進行合併。此外,需特別注意合併條件(ON),除了配對相同屬性外,必須利用主鍵(BookID)的大小於比較(< 或 >)來排除「自己與自己配對」以及「重複組合(如 A配B 與 B配A)」的問題。