MySQL是一款常用的關(guān)系型數(shù)據(jù)庫,也是許多企業(yè)和網(wǎng)站的數(shù)據(jù)存儲方式。在實際生產(chǎn)中,經(jīng)常需要對MySQL中的數(shù)據(jù)進行統(tǒng)計和分析,在此我們介紹如何使用MySQL每半小時對數(shù)據(jù)進行求和。
CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` float NOT NULL, `time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上是創(chuàng)建一個簡單的數(shù)據(jù)表,包含三個字段:
- id:自增主鍵
- value:數(shù)據(jù)值
- time:數(shù)據(jù)時間
INSERT INTO `mytable` (`value`, `time`) VALUES (10, NOW()); INSERT INTO `mytable` (`value`, `time`) VALUES (20, NOW() - INTERVAL 5 MINUTE); INSERT INTO `mytable` (`value`, `time`) VALUES (30, NOW() - INTERVAL 10 MINUTE); INSERT INTO `mytable` (`value`, `time`) VALUES (40, NOW() - INTERVAL 15 MINUTE); INSERT INTO `mytable` (`value`, `time`) VALUES (50, NOW() - INTERVAL 20 MINUTE); INSERT INTO `mytable` (`value`, `time`) VALUES (60, NOW() - INTERVAL 25 MINUTE);
以上代碼向數(shù)據(jù)表中插入了6條數(shù)據(jù),value字段分別為10、20、30、40、50、60,時間間隔為5分鐘,時間戳分別為現(xiàn)在、5分鐘前、10分鐘前、15分鐘前、20分鐘前、25分鐘前。
SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i') AS time, SUM(value) AS total FROM mytable WHERE time BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW() GROUP BY DATE_FORMAT(time, '%Y-%m-%d %H:%i') ORDER BY time ASC;
以上是每半小時數(shù)據(jù)求和的關(guān)鍵語句。首先根據(jù)時間條件篩選出最近30分鐘的數(shù)據(jù),然后按照每半小時一個區(qū)間進行分組,在每個區(qū)間內(nèi)求和,最后按照時間進行升序排序。輸出結(jié)果如下:
+---------------------+-------+ | time | total | +---------------------+-------+ | 2021-10-27 11:15 | 10.0 | | 2021-10-27 11:20 | 30.0 | | 2021-10-27 11:25 | 60.0 | | 2021-10-27 11:30 | 90.0 | +---------------------+-------+
以上是MySQL每半小時數(shù)據(jù)求和的簡單演示,通過這種方式可以對數(shù)據(jù)庫中的數(shù)據(jù)進行快速統(tǒng)計和分析,方便實際生產(chǎn)中的應(yīng)用。
下一篇css 超超隱藏