天天看點

oracle 按年,,,季度,,,月,,,,周,,,統計

按照每周進行統計

 select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');

按照每月進行統計

 select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');

按照每季度進行統計

 select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');

按照每年進行統計

 select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');

如下表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

繼續閱讀