mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)
本篇文章給大家?guī)淼膬?nèi)容是關于MySQL按時間統(tǒng)計數(shù)據(jù)的方法介紹(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
在做數(shù)據(jù)庫的統(tǒng)計時,經(jīng)常會需要根據(jù)年、月、日來統(tǒng)計數(shù)據(jù),然后配合echarts來制作可視化效果。
數(shù)據(jù)庫:MySQL(推薦教程:MySQL教程)
思路
按照時間維度進行統(tǒng)計的前提是需要數(shù)據(jù)庫中有保留時間信息,建議是使用MySQL自帶的datetime類型來記錄時間。`timestamp` datetime DEFAULT NULL,
在MySQL中對于時間日期的處理的函數(shù)主要是DATE_FORMAT(date,format)。可用的參數(shù)如下格式描述
%a縮寫星期名
%b縮寫月名
%c月,數(shù)值
%D帶有英文前綴的月中的天
%d月的天,數(shù)值(00-31)
%e月的天,數(shù)值(0-31)
%f微秒
%H小時 (00-23)
%h小時 (01-12)
%I小時 (01-12)
%i分鐘,數(shù)值(00-59)
%j年的天 (001-366)
%k小時 (0-23)
%l小時 (1-12)
%M月名
%m月,數(shù)值(00-12)
%pAM 或 PM
%r時間,12-小時(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T時間, 24-小時 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,與 %X 使用
%v周 (01-53) 星期一是一周的第一天,與 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,與 %V 使用
%x年,其中的星期一是周的第一天,4 位,與 %v 使用
%Y年,4 位
%y年,2 位
注:當涉及到按日統(tǒng)計是,需要使用%j,而如果使用%d, %e, %w的話,那么不同月份/周里的相同值會統(tǒng)計在一起。
涉及到獲取當前時間,則可以通過now()或者sysdate()來獲取。SELECT SYSDATE() FROM DUAL;SELECT NOW() FROM DUAL;
按照實際需求使用group by查詢即可。
結(jié)論
需統(tǒng)計的表結(jié)構如下:CREATE TABLE `apilog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL, `action` varchar(64) DEFAULT NULL, `params` text, `result` text, `timestamp` datetime DEFAULT NULL, PRIMARY KEY (`id`))
統(tǒng)計時間范圍內(nèi)不同分類action的數(shù)量# 當日SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%j') = DATE_FORMAT(now(),'%j') ORDER BY count desc;# 當周SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc;# 當月SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc;# 當年SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc;
統(tǒng)計某分類action的時間維度數(shù)量# 按日SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%j')# 按周SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%u')# 按月SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%m')# 按年SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%Y')
同時按action和時間維度統(tǒng)計# 按日SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%j')# 按周SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%u')# 按月SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%m')# 按年SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%Y')
總結(jié)
以上是生活随笔為你收集整理的mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水浴法对烤箱的损伤
- 下一篇: mysql设计功能设置表_MySQL数据