mysql,postgresql 按 年、季、月、周、天 統計

mysql

按日

SELECT COUNT(*),DATE(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime)='2016' GROUP BY DAY(CreateTime)

按周

SELECT COUNT(*),WEEK(CreateTime) FROM t_voipchannelrecord WHERE MONTH(CreateTime) = '8' GROUP BY WEEK(CreateTime) 

週一到週五每天的統計結果

SELECT COUNT(*),DAYNAME(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY DAYNAME(CreateTime) 

統計本週數據

SELECT COUNT(*) FROM t_voipchannelrecord WHERE MONTH(CreateTime) = MONTH(CURDATE()) AND WEEK(CreateTime) = WEEK(CURDATE())

按月統計

SELECT COUNT(*),MONTH(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY MONTH(CreateTime) 

按季統計

SELECT COUNT(*),QUARTER(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY QUARTER(CreateTime) 

按年統計

SELECT COUNT(*),YEAR(CreateTime) FROM t_voipchannelrecord  GROUP BY YEAR(CreateTime) 

 

postgresql

1、按日統計

to_char( h.row_date, 'yyyy-MM-dd' ) AS row_date2

GROUP BY  to_char( h.row_date, 'yyyy-MM-dd' )

2、按月統計

to_char(h.row_date, 'yyyy-MM' ) AS row_date2

GROUP BY  to_char(h.row_date, 'yyyy-MM' )

3、按年統計

to_char( h.row_date,'yyyy' ) AS row_date2

GROUP BY to_char( h.row_date,'yyyy' )

4、按小時統計

to_char( h.row_date, 'yyyy-MM-dd HH' ) AS row_date2

GROUP BY  to_char( h.row_date, 'yyyy-MM-dd HH' )

5、按分鐘統計

to_char( h.row_date, 'yyyy-MM-dd HH:mm' ) AS row_date2

GROUP BY  to_char( h.row_date, 'yyyy-MM-dd HH:mm' )

6、按周統計

按周統計最簡單法

對時間row_date字段做處理,變成對應日期週一時間,然後按這個週一的時間去統計。減1的操作表示爲對應日期的星期一,減1,2,3,4,5,6,7分別是對應日期的週一,週二,週三,週四,週五、週六、週日。

to_char( h.row_date-(extract (dow from h.row_date) - 1 ||'day')::interval,'yyyy-MM-dd')  row_date

然後按上面的語句分組統計即可實現按周統計,下面對應分組函數

GROUP BY  to_char(h.row_date-(extract (dow from h.row_date) - 1 ||'day')::interval,'yyyy-MM-dd')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章