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

SQL 高階・存取日誌:平均、分桶與中位數

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

  1. 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 使用者(文字)、method HTTP 方法(文字)、path 路徑(文字)、status 狀態碼(整數)、ms 回應毫秒(整數)。

    本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。

    作答登入後可作答
  2. 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 使用者(文字)、method HTTP 方法(文字)、path 路徑(文字)、status 狀態碼(整數)、ms 回應毫秒(整數)。

    本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。

    作答登入後可作答
  3. 03

    各 HTTP 方法的回應中位數

    困難視窗函數(中位數)

    SQLite 沒有 MEDIAN 函數。請用視窗函數算出每種 method 的回應時間中位數:筆數為奇數取正中間那筆,偶數取中間兩筆的平均。

    輸出三欄:method、n(筆數)、median_ms(用 AVG 對中間一或兩筆取平均,所以結果是浮點數),依 method 由小到大。

    資料表 access_log(API 存取日誌):id 編號(整數,主鍵)、ts 時間(文字,格式 'YYYY-MM-DD HH:MM:SS')、user_id 使用者(文字)、method HTTP 方法(文字)、path 路徑(文字)、status 狀態碼(整數)、ms 回應毫秒(整數)。

    本題在瀏覽器內以 SQLite 執行,只寫一段 SELECT 即可。

    作答登入後可作答