sql月度分组_SQL语句按年 月 日 季度分组

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

按照月份统计

select count(id) cnt,datepart(mm,time) [Month]

from [table]

where [time] between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'

group by datepart(mm,time)

--按照日统计

select count(id) cnt,datepart(dd,time) [Day]

from [table]

where time between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'

group by datepart(dd,time)

--按照小时统计

select count(id) cnt,datepart(hh,time) [Hour]

from [table]

where [time] between '2007/09/08 09:10:43' and '2007/10/09 04:32:37'

group by datepart(hh,time)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值