1.按年份分组

  select to_char(exportDate,‘yyyy’),sum(amount) from table1 group by to_char(exportDate,‘yyyy’);

  年份      数量
  -----------------------------
  2009    68
  2010    137
  2008    103

  2.按月份分组

  select to_char(exportDate,‘yyyy-mm’),sum(amount) from table1 group by to_char(exportDate,‘yyyy-mm’)

  order by to_char(exportDate,‘yyyy-mm’);

  月份           数量
  -----------------------------
  2008-02    20
     2008-03    2
  2008-04    6
  2008-06    75
  2009-10    23
     2009-11    45
  2010-08    5
  2010-09    44
  2010-10    88

  3.按季度分组

  select to_char(exportDate,‘yyyy-Q’),sum(amount) from table1 group by to_char(exportDate,‘yyyy-Q’)

  order by to_char(exportDate,‘yyyy-Q’);

  季度          数量
  ------------------------------
  2008-1    22
     2008-2    81
  2009-4    68
  2010-3    49
  2010-4    88

  4.按周分组

  select to_char(exportDate,‘yyyy-IW’),sum(amount) from table1 group by to_char(exportDate,‘yyyy-IW’)

  order by to_char(exportDate,‘yyyy-IW’);

  周             数量
  ------------------------------
  2008-07    20
  2008-11    2
  2008-16    6
  2008-24    75
  2009-43    23
  2009-46    45
  2010-31    5
  2010-35    44
     2010-40    88

  补充:

  按季度分组还有个比较笨的方法(参考网络资源)

select to_char(exportDate,‘yyyy’),
  sum(decode(to_char(exportDate,‘mm’),‘01’,amount,‘02’,amount,‘03’,amount,0)) as 第一季,
  sum(decode(to_char(exportDate,‘mm’),‘04’,amount,‘05’,amount,‘06’,amount,0)) as 第二季,
  sum(decode(to_char(exportDate,‘mm’),‘07’,amount,‘08’,amount,‘09’,amount,0)) as 第三季,
  sum(decode(to_char(exportDate,‘mm’),‘10’,amount,‘11’,amount,‘12’,amount,0)) as 第四季
  from table1
  group by to_char(exportDate,‘yyyy’);

  年份        第一季     第二季     第三季     第四季
   --------------------------------------------------
  2009         0            0            0          68
  2010         0            0            49        88
  2008         22          81           0          0

按照月份统计

select count(id) cnt,datepart(mm,time) [Month]
from [table]
where [time] between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'
group by datepart(mm,time)


--按照日统计

select count(id) cnt,datepart(dd,time) [Day]
from [table]
where time between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'
group by datepart(dd,time)


--按照小时统计

select count(id) cnt,datepart(hh,time) [Hour]
from [table]
where [time] between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'
group by datepart(hh,time)