SQL 中階・找重複與去重
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 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) 可能被抓多次。作答登入後可作答 - 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 以上語法相同。
作答登入後可作答 - 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重試次數(整數)。作答登入後可作答

送件鴿飛出去了