MySQL按照分鐘統計請求量

今天兄弟團隊找到我,指望出一份他們訪問中間件(飛鴿)的發佈量數據,因爲目前的系統報表沒有細分到隊列級別,一次這裏作一次測試和記錄。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

缺點:沒法將時間進行連續的進行展現,例如某分鐘沒有數據,則結果中沒有任何數據

相關文章
相關標籤/搜索