AI & Data Dreamers練功房
寶箱片場規則
QUERY GATES・資料庫關卡・高階・3 題

SQL 高階・交叉表、CTE 與分組前幾名

這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。

  1. 01

    條件聚合-種類交叉表

    中等

    做一張「產地 × 種類」的交叉表:每個產地一列,欄位依序為產地名稱、點心數、飲料數、調味品數。

    表頭命名為 '產地'、'點心'、'飲料'、'調味品'。只列出有食品的產地,依產地名稱排序。

    提示:SUM(CASE WHEN 條件 THEN 1 ELSE 0 END) 可以只計算符合條件的列。

    資料表 food:id 編號(文字,主鍵)、name 名稱(文字)、expiredate 到期日(文字,格式 'YYYY-MM-DD')、placeid 產地編號(文字)、price 價格(整數)、catalog 種類(文字)。

    資料表 place:id 產地編號(文字,主鍵)、name 產地名稱(文字)。

    作答登入後可作答
  2. 02

    CTE-各產地營收占比

    中等

    用 WITH(CTE)先算出每個產地的價格加總,再算出每個產地加總占「全部加總」的百分比(ROUND 到小數第 1 位)。

    輸出產地名稱、加總、占比,表頭命名為 '產地'、'加總'、'占比',依加總由高到低排序。

    提示:整數相除會捨去小數,計算前先乘以 100.0。

    資料表 food:id 編號(文字,主鍵)、name 名稱(文字)、expiredate 到期日(文字,格式 'YYYY-MM-DD')、placeid 產地編號(文字)、price 價格(整數)、catalog 種類(文字)。

    資料表 place:id 產地編號(文字,主鍵)、name 產地名稱(文字)。

    作答登入後可作答
  3. 03

    視窗函數-各產地價格前二名

    困難

    查詢每個產地「價格最高的前 2 名」食品,輸出產地名稱、食品名稱、價格、名次(表頭 '產地'、'食品'、'價格'、'名次')。

    名次用 ROW_NUMBER() 依價格由高到低計算,價格相同時以食品編號較小者在前。

    結果依產地名稱、名次排序。

    資料表 food:id 編號(文字,主鍵)、name 名稱(文字)、expiredate 到期日(文字,格式 'YYYY-MM-DD')、placeid 產地編號(文字)、price 價格(整數)、catalog 種類(文字)。

    資料表 place:id 產地編號(文字,主鍵)、name 產地名稱(文字)。

    作答登入後可作答