199. 有正值測站
維護報表必須看得到沒有資料或沒有測站的項目,不能漏掉未配對紀錄。
以 zone 相等配對,NULL zone 不匹配,一對多逐配對處理。連接後用 WHERE 保留正 reading,僅有此配對的測站出現,計算正配對數;不輸出零配對站。
輸出欄位依序為 station_id, match_count。排序:station_id 升序,NULL 最後。文字排序採 ASCII 字元碼順序。
NULL 表示缺值,不等於 0 或空字串。WHERE/HAVING 只保留真值,假或未知皆排除;一般等號不匹配 NULL。算術操作數缺值時結果為 NULL,除非題目指定備援規則。COUNT(欄位)、SUM、AVG、MIN、MAX 忽略該欄 NULL;COUNT(*) 計算列數。未要求分組或去重時保留所有重複紀錄。空結果仍須具有指定欄名。
案例資料表
fixture 只建立以下資料表;資料插入順序不代表結果順序。
readings: id INTEGER NOT NULL, zone TEXT NULL, reading INTEGER NULL, weight INTEGER NULL, flag INTEGER NULL, day INTEGER NOT NULL, label TEXT NULL.
stations: station_id INTEGER NOT NULL, zone TEXT NULL, target INTEGER NULL, enabled INTEGER NULL.
JSON null 轉為 SQL NULL。每表第一欄 id/station_id 為唯一正整數;不同表中的相同 id 不表示配對。
查詢結果
查詢結果為 {columns,rows};columns 依序為 [station_id, match_count],rows 是按指定順序排列的普通資料列,空結果為 []。NULL 使用 JSON null。
資料表結構
看個例子
範例 1
範例 2
資料範圍
每表 0 至 12 列。id/station_id 為 1 至 10000 的唯一整數。reading、weight、target 為 [-100,100] 整數或 NULL,負數表示帶方向的測量或校準值。flag、enabled 為 0、1 或 NULL;day 為 1 至 30 整數。zone、label 只含小寫 ASCII 字母,長度至多 20,也可能為空字串或 NULL。文字依二進位/字元碼順序比對並遵守指定排序。只提交使用 fixture 資料表的一個唯讀 SELECT 或 WITH 查詢,不修改資料庫,不依賴插入順序。數值結果使用平台所列浮點容許誤差;未要求時不自行四捨五入。
💡 給我一點提示+
將匹配條件放在 ON;計算真正匹配數時用右側非 NULL id,避免 COUNT(*) 把補列算入。
直接撰寫一個 SELECT 查詢,可使用 WITH。右上方可切換 SQLite、PostgreSQL 與 MySQL;請使用所選引擎的語法。每組案例都會建立新的資料表,依題目規則比對欄位名稱、資料列與排序。
公開案例固定為 3 組。自訂案例只用於測試,不納入提交評分。0 / 17 組自訂案例
提交結果
測試結果
公開與自訂案例按「測試程式」查看執行結果。
SQL 測試會傳送查詢與案例資料到伺服器,使用所選引擎隔離執行;測試不保存提交、不標記完成或增加 XP。每種引擎的本機草稿分開保留。