今天兄弟團隊找到我,指望出一份他們訪問中間件(飛鴿)的發佈量數據,因爲目前的系統報表沒有細分到隊列級別,一次這裏作一次測試和記錄。mysql
按照分鐘級別統計使用組件的發佈量sql
CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `content` text, `time` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `time_idx` (`time`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
id爲消息id,content爲消息內容,time爲Unix時間戳函數
解決思路,經過mysql的時間戳函數: FROM_UNIXTIME 以及分組:group by進行。測試
爲了便於閱讀,先對時間進行轉換code
date_format( FROM_UNIXTIME(time
), '%Y-%m-%d %H:%i' ) as time_testorm
group by time_test中間件
完整的查詢語句以下:隊列
SELECT date_format( FROM_UNIXTIME(`time`), '%Y-%m-%d %H:%i' ) AS time_test, count( id ) FROM `test` WHERE `time` BETWEEN 1447776000 AND 1447862400 GROUP BY time_test ORDER BY time_test
查詢效果以下:圖片
優勢:能夠按照數據表中的數據,按照分鐘級別進行統計it
缺點:沒法將時間進行連續的進行展現,例如某分鐘沒有數據,則結果中沒有任何數據