日期:2014-05-17  浏览次数:20820 次

oracle 按年月分组的效率
有个订单表tbl_order里面有个日期字段ordertime, 现在想按年月分组,因为这个表里没有单独记录年月的字段,需要对ordertime处理。

select to_char(ordertime,'yyyymm') monthid,sum(salemoney) from tbl_order group by  to_char(ordertime,'yyyymm');


另外还看到另外一种做法:
select monthid,sum(salemoney) from (select to_char(ordertime,'yyyymm') monthid,t.* tbl_order t) group by monthid;

请问下这两种效率哪个更好点,有没有其他更好的办法?

------解决方案--------------------
select to_char(ordertime,'yyyymm') monthid,sum(salemoney) from tbl_order group by  to_char(ordertime,'yyyymm');

--这个效率应该会高一些。。。具体需要看执行计划吧
------解决方案--------------------
第一种  或者截取


select substr(ordertime,1,6) monthid,sum(salemoney) 
from tbl_order 
group by  substr(ordertime,1,6);