SQL 高階・存取日誌:平均、分桶與中位數
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 01
高於同路徑平均的請求-AVG OVER
困難視窗函數效能分析要找出「比同一個 path 的平均回應時間還慢」的請求。
請查詢 id、path、ms,以及該 path 的平均回應時間(欄名 path_avg,用 AVG 計算,保留 AVG 的原始結果、不要四捨五入),只列出 ms 嚴格大於 path_avg 的請求,依 id 由小到大。
資料表
access_log(API 存取日誌):id編號(整數,主鍵)、ts時間(文字,格式 'YYYY-MM-DD HH:MM:SS')、user_id使用者(文字)、methodHTTP 方法(文字)、path路徑(文字)、status狀態碼(整數)、ms回應毫秒(整數)。本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。
作答登入後可作答 - 02
每 10 秒請求量與累計-時間分桶
困難時間分桶+視窗函數監控圖表要以 10 秒為一桶統計請求量。桶的標籤取 ts 的時分秒,把秒數的個位數換成 0(例如 10:00:07 → 10:00:00、10:00:15 → 10:00:10)。
請輸出每個有請求的桶一列:bucket(字串,格式 HH:MM:SS)、n(該桶請求數)、running(到該桶為止的累計請求數)、last_2(該桶加上前一個有資料的桶的請求數總和;第一個桶就是自己),依 bucket 由小到大。
資料表
access_log(API 存取日誌):id編號(整數,主鍵)、ts時間(文字,格式 'YYYY-MM-DD HH:MM:SS')、user_id使用者(文字)、methodHTTP 方法(文字)、path路徑(文字)、status狀態碼(整數)、ms回應毫秒(整數)。本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。
作答登入後可作答 - 03
各 HTTP 方法的回應中位數
困難視窗函數(中位數)SQLite 沒有 MEDIAN 函數。請用視窗函數算出每種 method 的回應時間中位數:筆數為奇數取正中間那筆,偶數取中間兩筆的平均。
輸出三欄:method、n(筆數)、median_ms(用 AVG 對中間一或兩筆取平均,所以結果是浮點數),依 method 由小到大。
資料表
access_log(API 存取日誌):id編號(整數,主鍵)、ts時間(文字,格式 'YYYY-MM-DD HH:MM:SS')、user_id使用者(文字)、methodHTTP 方法(文字)、path路徑(文字)、status狀態碼(整數)、ms回應毫秒(整數)。本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。
作答登入後可作答

送件鴿飛出去了