MySQL,PostgreSQL 按 年、季、月、周、天 统计
MySQL
按日
1
| SELECT COUNT(*),DATE(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime)='2016' GROUP BY DAY(CreateTime)
|
按周
1 2 3 4 5 6 7 8 9
| 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())
|
按月统计
1
| SELECT COUNT(*),MONTH(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY MONTH(CreateTime)
|
按季统计
1
| SELECT COUNT(*),QUARTER(CreateTime) FROM t_voipchannelrecord WHERE YEAR(CreateTime) = '2016' GROUP BY QUARTER(CreateTime)
|
按年统计
1
| SELECT COUNT(*),YEAR(CreateTime) FROM t_voipchannelrecord GROUP BY YEAR(CreateTime)
|
PostgreSQL
按日统计
1 2 3
| to_char( time, 'yyyy-MM-dd' ) AS time
GROUP BY to_char(time, 'yyyy-MM-dd' )
|
按月统计
1 2 3
| to_char(time, 'yyyy-MM' ) AS time
GROUP BY to_char(time, 'yyyy-MM' )
|
按年统计
1 2 3
| to_char( time,'yyyy' ) AS time
GROUP BY to_char( time,'yyyy' )
|
按小时统计
1 2 3
| to_char(time, 'yyyy-MM-dd HH' ) AS time
GROUP BY to_char( time, 'yyyy-MM-dd HH' )
|
按分钟统计
1 2 3
| to_char( time, 'yyyy-MM-dd HH:mm' ) AS time
GROUP BY to_char( time, 'yyyy-MM-dd HH:mm' )
|
按周统计
按周统计最简单法
对时间row_date字段做处理,变成对应日期周一时间,然后按这个周一的时间去统计。减1的操作表示为对应日期的星期一,减1,2,3,4,5,6,7分别是对应日期的周一,周二,周三,周四,周五、周六、周日。
to_char( time-(extract (dow from time) - 1 ||’day’)::interval,’yyyy-MM-dd’) row_date
然后按上面的语句分组统计即可实现按周统计,下面对应分组函数
GROUP BY to_char(time-(extract (dow from time) - 1 ||’day’)::interval,’yyyy-MM-dd’)