Mysql按時,天,月,年統計數據 - [ 挑戰者 ]

爲了更加直觀地觀察數據的變化情況,我們經常需要對數據進行統計,製作折線圖,餅圖,直方圖,來觀察數據在一段時間的變化,方便我們做出策略性地調整。
次數的統計是最常見的一種,可以觀察數據在一段時間內的變化,但也有多種需求,如觀察每小時數據的變化,每天數據的變化,每月數據變化,每年數據的變化。
如下圖:

但是如何設計一種方案來處理不同時間的變化呢?
我們應該儘可能地利用數據庫的基本功能來完成這些功能,因爲效率更加高。

1.把時間進行分組(不同類型分組不同)

時間戳方式:

  • 按照小時分組
    Select count(*) as count,date_format(FROM_UNIXTIME(createtime),’%Y-%m-%d %H’) as createdate from xtable group by createdate
  • 按照天分組
    Select count(*) as count,date_format(FROM_UNIXTIME(createtime),’%Y-%m-%d’) as createdate from xtable group by createdate
  • 按照天分組
    Select count(*) as count,date_format(FROM_UNIXTIME(createtime),’%Y-%m’) as createdate from xtable group by createdate
  • 按照年分組
    Select count(*) as count,date_format(FROM_UNIXTIME(createtime),’%Y’) as createdate from xtable group by createdate

    日期時間格式(標準)

  • 按照小時分組Select count(*) as count,date_format(createtime,’%Y-%m-%d %H’) as createdate from xtable group by createdate
  • 按照天分組
    Select count(*) as count,date_format(createtime,’%Y-%m-%d’) as createdate from xtable group by createdate
  • 按照天分組
    Select count(*) as count,date_format(createtime,‘%Y-%m’) as createdate from xtable group by createdate
  • 按照年分組
    Select count(*) as count,date_format(createtime,’%Y’) as createdate from xtable group by createdate

    2.多種類型數據的統計

    我們統計數據經常統計一種數據,一般有多種類型,如中國的人口=農村人口+城市人口
    這種情況要如何處理,才更加合理?假如先統計總數,再分別統計子項目數量,這樣子當某個子項目數量爲0時,統計就會出錯。
    我們可以先統計出總的數據,如某段時間的中國人口數量變化,根據總數的日期(createdate )逐個查出農村和城市數量,這樣就不會統計出不需要的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章