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

SQL 中階・找重複與去重

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

  1. 01

    找出重複鍵

    容易

    原始表 stock_price_raw 沒有主鍵,重跑爬蟲後出現重複。請列出被抓超過一次的 (stock_id, date) 與次數,欄位依序 stock_id、date、次數,依 stock_id、date 排序。

    資料表 stock_price_raw(爬蟲落地的原始表,沒有主鍵):stock_id、date、close(實數)、fetched_at 抓取時間(文字,'YYYY-MM-DD HH:MM:SS')。同一個 (stock_id, date) 可能被抓多次。

    作答登入後可作答
  2. 02

    去重保留最新

    困難

    從 stock_price_raw 去重:同一個 (stock_id, date) 只保留 fetched_at 最新的那一筆(FinMind 事後修正的值會蓋掉舊值)。輸出 stock_id、date、close,依 stock_id、date 排序。這就是第 15 章 stage 層「去重」的標準寫法;BigQuery 可用 QUALIFY 省掉外層查詢。

    資料表 stock_price_raw(爬蟲落地的原始表,沒有主鍵):stock_id、date、close(實數)、fetched_at 抓取時間(文字,'YYYY-MM-DD HH:MM:SS')。同一個 (stock_id, date) 可能被抓多次。

    平台以 sqlite 執行,支援 window function 與 CTE;MySQL 8.0 以上語法相同。

    作答登入後可作答
  3. 03

    重試過的任務

    容易

    第 4 章的 retry 機制會讓 retries 大於 0。請列出重試過的任務及其最終狀態,欄位依序 task_id、task_name、state、retries,依 task_id 排序。

    資料表 task_log(Flower 匯出的任務紀錄):task_id(文字,主鍵)、task_name、queue 佇列、worker、state(SUCCESS/FAILURE/STARTED)、started_at、finished_at(文字,'YYYY-MM-DD HH:MM:SS';尚未結束為 NULL)、retries 重試次數(整數)。

    作答登入後可作答