oracle 年,季度,月,周,日,分组

如下表table1:
  日期(exportDate)               数量(amount)
  --------------                    -----------
  14-2月 -08                       20
  10-3月 -08                       2
  14-4月 -08                       6
  14-6月 -08                       75
  24-10月-09                      23
  14-11月-09                      45
  04-8月 -10                       5
  04-9月 -10                       44
  04-10月-10                      88
  注意:为了显示更直观,如下查询已皆按相应分组排序
  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

猜你喜欢

转载自mxm910821.iteye.com/blog/1827739