Oracle按时间分组统计代码

发布时间:2020-02-22编辑:脚本学堂
本文介绍了oracle按时间分组统计的实现代码,有需要的朋友参考下。

如何在oracle数据库中实现按时间分组统计?这里脚本小编收集了几个例子,一起来看看吧。

如下表table1:
 

复制代码 代码示例:
日期(exportDate)               数量(alinuxjishu/9952.html target=_blank class=infotextkey>mount)
--------------                    -----------
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