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
- 上一篇: 一个小菜鸟对数据在内存中的二进制存储的理解
- 下一篇: Linux proc/%d/stat文件详解