Oracle---按各种时间分组统计的sql

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

order by to_char(exportDate,'yyyy');

年份      数量

-----------------------------
2008    103

2009    68
2010    137

 

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

 

 

 

 

 

你可能感兴趣的:(oracle,sql)