免費開始練習
高考申論題 112年 [資訊處理] 資料庫應用

第 一 題

📖 題組:
承上題的資料庫綱目(schema),請用 SQL 回答下列查詢: (每小題 10 分,共 20 分) (一)我們想要查出有那些旅客,他們從來沒有搭乘過“甲航空”的任何一個航班的,列出這些旅客的護照號碼和姓名。 (二)我們想要找出有那些航班的乘客人數是低於 10 人的(i.e.,<10),請列出這些航班所屬的航空公司,和該航班的航班編號,以及搭乘該航班的人數(注意,是低於 10 人的)。
📝 此題為申論題,共 2 小題

小題 (一)

我們想要查出有那些旅客,他們從來沒有搭乘過“甲航空”的任何一個航班的,列出這些旅客的護照號碼和姓名。

思路引導 VIP

看到「從來沒有搭乘過...的任何一個...」這種包含否定全稱的條件,應直覺聯想到使用 NOT INNOT EXISTS 子查詢。解題關鍵是「反向思考」:先利用子查詢找出「曾經搭乘過甲航空」的旅客護照號碼,再從旅客主表中將這些人排除。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用 NOT INNOT EXISTS 子查詢,先篩選出有搭乘過甲航空的旅客集合,再從全體旅客中將其排除。 【詳解】 已知:由於題目未提供完整綱目,故假設相關的資料表與欄位如下:

小題 (二)

我們想要找出有那些航班的乘客人數是低於 10 人的(i.e.,<10),請列出這些航班所屬的航空公司,和該航班的航班編號,以及搭乘該航班的人數(注意,是低於 10 人的)。

思路引導 VIP

看到「計算人數」與「低於特定數量」,應立即聯想到使用 GROUP BY 進行分組,並搭配 HAVING COUNT() 來篩選聚合結果。需特別注意隱藏陷阱:「低於 10 人」包含「0 人搭乘」的情況,因此必須以航班資料表為主表進行 LEFT JOIN 乘客搭乘紀錄表,否則會遺漏無人搭乘的航班。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用 LEFT JOIN 確保涵蓋 0 人航班,並以 GROUP BY 與 HAVING 進行分組計數與條件篩選。 【詳解】 已知:由於題目未提供完整綱目,依據題意合理假設關聯綱目如下:

升級 VIP 解鎖