select COUNT(*) AS server_amount, MIN(t1.amount), MAX(t1.amount)
from stats t1 inner join (
select min(id) as id,
DATE_FORMAT(created_at,'%Y-%m-%d %H:%i') as created_at
from stats
group by server_id,DATE_FORMAT(created_at,'%Y-%m-%d %H:%i')
) t2 on t1.id = t2.id
group by t2.created_at
※ 引述《chan15 (ChaN)》之銘言:
: 資料庫名稱:MySQL
: 資料庫版本:5.6
: 內容/問題描述:
: 資料表架構以及資料
: id server_id amount created_at
: "1" "1" "20" "2018-02-04 16:05:03"
: "2" "2" "10" "2018-02-04 16:05:03"
: "3" "1" "12" "2018-02-04 16:06:02"
: "4" "2" "30" "2018-02-04 16:06:02"
: "5" "1" "10" "2018-02-04 16:06:10"
: "6" "2" "40" "2018-02-04 16:06:10"
: "7" "1" "15" "2018-02-04 16:07:04"
: "8" "2" "15" "2018-02-04 16:07:04"
: 各位好,我的 crontab 每分鐘會執行一次,去紀錄每台 server 的人數
: 但有可能因為測試原因,造成同一分鐘不只一組資料
: 像這個 demo id 5 以及 6 就是多餘的
: 我要統計的語法為
: SELECT COUNT(*) AS server_amount, MIN(amount), MAX(amount)
: FROM stats
: GROUP BY DATE_FORMAT(created_at, '%Y-%m-%d %H:%i')
: 上面這段資料得到的結果則是
: "2" "10" "20"
: "4" "10" "40"
: "2" "15" "15"
: 第二筆資料受到了錯誤資料的影響,不知道怎麼排除在該時間內多餘的資料
: server 不一定只有兩台,所以不能用 server_id 數字當作依據