日期:2014-05-16  浏览次数:20754 次

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

?

?

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

?

?

-------------------------------------------------------

1.按年份分组
  select to_char(exportDate,'yyyy'),sum(amount) from table1 group by to_char(exportDate,'yyyy');
  年份????? 数量
  -----------------------------
  2009??? 68
  2010??? 137
  2008??? 103

-------------------------------------------

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

?

?

转自 http://www.233.com/oracle/zonghe/20101026/114104335.html