时间字段按年月分组 sql语句怎么写?

wflyxiaonian 2011-09-22 10:12:10
数据库是mysql

比如字段两列
A B
2011-10-10 100
2011-10-20 100
2012-05-15 50


查询结果为

A B
2011-10 200
2012-05 50


...全文
826 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅蛋x 2011-12-20
  • 打赏
  • 举报
回复
mysql有to_char吗?
scrack 2011-09-22
  • 打赏
  • 举报
回复
select distinct to_char(A,'yyyy-mm') as A,sum(B)over(partition by to_char(A,'yyyymm'))
from dm_gw order by A
胖胖_多多 2011-09-22
  • 打赏
  • 举报
回复

with dm_gw as(
select to_date('2011-10-10', 'YYYY-MM-DD') A, '100' B from dual union all
select to_date('2011-10-20', 'YYYY-MM-DD') A, '100' B from dual union all
select to_date('2012-05-15', 'YYYY-MM-DD') A, '50' B from dual
)

select distinct to_char(A,'yyyy-mm') as A,sum(B)over(partition by to_char(A,'yyyymm'))
from dm_gw order by A

--结果
2011-10 200
2012-05 50

luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 除了使用to_char()函数外,也可以使用trunc()函数将日期部分截断到月(取每月的第一天)
select trunc(a,'mm') as a, sum(b)
from tb
group by trunc(a,'mm');

-- trunc()函数应该比to_char()函数效率更高!(有待证明)
Rotel-刘志东 2011-09-22
  • 打赏
  • 举报
回复
---上边写错了
select sum(B),to_char(A,'yyyy-mm') as 'A'
from tb
group by a
Rotel-刘志东 2011-09-22
  • 打赏
  • 举报
回复
select sum(B),to_char(A,'yyyy-mm') as 'A;
from tb
group by a
cosio 2011-09-22
  • 打赏
  • 举报
回复
select to_char(A,'yyyymm') as A,sum(B)over(partition by to_char(A,'yyyymm'))
from table
Rocky_Tian2012 2011-09-22
  • 打赏
  • 举报
回复

to_char(A,'yyyymm') as A

sum(B)
group by A

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧