按周

按天、按周、按月、按季、按年分期别统计

妖精的绣舞 提交于 2019-11-27 19:28:40
在面对大数据量按期别统计时,数据库表中往往只有一个日期列,如果在统计时直接使用to_char函数转换成期别进行group by会导致SQL执行较慢,因为to_char后用不上索引,而大部分时候我们只建立一个函数索引to_char(r.finish_time, 'yyyy-mm-dd')。以下为各期别的to_char格式: 1)、按天统计,to_char(r.finish_time, 'yyyy-mm-dd'); 2)、按月统计,to_char(r.finish_time, 'yyyy-mm'); 3)、按年统计,to_char(r.finish_time, 'yyyy'); 4)、按季统计,to_char(r.finish_time, 'yyyy-"Q"q'); 5) 、按周统计, to_char(r.finish_time, 'yyyy-iw'); 如果时间范围不是日期范围,需将各统计方式时间段转换为日期时间段作为条件,便于使用索引to_char(r.finish_time, 'yyyy-mm-dd'),先过滤有效记录再分组统计。 1)、按天统计,不需再处理; 2)、按月统计,开始时间+"-01",结束时间加+"-31"; 3)、按年统计,开始时间+"-01-01",结束时间加+"-12-31"; 4)、按季统计和按周统计,根据开始时间和结束时间计算最小日期和最大日期。 问题一