最近開發acm隊員cf數據統計查詢系統(https://github.com/liuyong0076/ACMER),需要對每個學號完成的cf題數進行計數。
首先使用cf提供的api將數據抓取並存入數據庫,其中有學號stuNO,比賽ID-cid,題目編號index,判題結果stutus幾個關鍵字段。
難點是要對同一個學號,同一個比賽id,同一道題的多次正確提交進行去重。
最終使用嵌套查詢實現,代碼如下:
select a.stuNo, count(*) from ( select stuNO, cid, `index`, statu,count(*) from acmerdata_cfcontest where status='OK' GROUP BY stuNO, cid, `index`, status HAVING count(*)<2 ) a group by a.stuNo;