请问下,想用一个SQL实现按周分组功能.
给定一段时间,我想以开始时间(开始日期不管周几都可以)按周分组,例如给定09年2月3号到2月23号,那么就按3号到9号,10号到16号...这么分组统计
不知是否可以实现下面这样,统计值为零的也占一行周数 日期 统计值
1 02/03-02/09 0
2 02/10-02/16 100
3 ...
多谢
给定一段时间,我想以开始时间(开始日期不管周几都可以)按周分组,例如给定09年2月3号到2月23号,那么就按3号到9号,10号到16号...这么分组统计
不知是否可以实现下面这样,统计值为零的也占一行周数 日期 统计值
1 02/03-02/09 0
2 02/10-02/16 100
3 ...
多谢
解决方案 »
- Error in Open method. ORA-12560: TNS: 协议适配器错误
- imp导入和recoverd database的问题
- DROP某種類型(TABLE,VIEW....)時哪些會被放入RECYCLEBIN?(急...在綫等)
- 求SQL
- 触发器的问题:xx is mutating, trigger/function may not see it
- 如何进入10G的控制台
- Windows下有哪些工具可以浏览Unix中的Oracle数据库?
- txt 文件导入到Oracle中,对txt文件的格式有的!
- 匹配的问题!!我个人觉得很棘手,望赐教!在线等!
- 请问一条SQL语句
- 合并记录
- invalid month
,to_char(To_Date('2009-02-03', 'YYYY-MM-DD') + 7 * (Weeks - 1),'MM/DD')||'-'||to_char(To_Date('2009-02-03', 'YYYY-MM-DD') + 7 * Weeks-1 ,'MM/DD') 日期
,Sumresults 统计值
From (Select Trunc((Hiredate - To_Date('2009-02-03', 'YYYY-MM-DD')) / 7) + 1 Weeks
,Sum(Empno) Sumresults
From Scott.Emp
Group By Trunc((Hiredate - To_Date('2009-02-03', 'YYYY-MM-DD')) / 7) + 1);
以上sql在Scott用户下调试过。
Hiredate换成你需要计算的日期字段,empno换成你需要计算的字段,from 子句换成你的表和查询条件。
很急的问题 按周统计和按月统计的问题
http://topic.csdn.net/t/20060223/15/4573067.html
COUNT(*) 统计值
FROM tb
GROUP BY to_char(日期,'yyyymm'),to_char(日期,'w');
http://www.itpub.net/thread-588185-1-1.html
看这个行不行,如果start_date参数类型不对,可用to_date函数转换一下
select a."周数",to_char(:start_date + a."周数" * 7 - 7,'mm/dd')||'-'||to_char(:start_date + a."周数" * 7 - 1,'mm/dd') as "日期",nvl("统计值",0) as "统计值" from
(select rownum as "周数" from yourtable where rownum <= ceil((:end_date - :start_date) / 7)) a,
(select ceil((createtime - :start_date) / 7) as "周数",count(*) as "统计值" from yourtable group by ceil((createtime - :start_date) / 7)) b
where a."周数" = b."周数"(+);
上面语句不够精确,时间界线可能还有问题,你可微调一下。
另外如果你专门建一个周数表就不用从yourtable中选rownum了。