按时间段分组的问题~

贝鱼 2010-11-18 11:49:54
想把表中的数据按时间段进行分组显示,按天分组的话:group by trunc(alm_date),要是按2小时分组呢,不知道怎么做了~望高手指点~
...全文
118 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gelyon 2010-11-18
  • 打赏
  • 举报
回复


--minitoy这个就能满足,只是如果你想显示区段名称,那么可以这样做:
--下面做个测试,测试数据伴随sysdate 变化

with t as(
select 100+level rid,'00000000'||(Mod(LEVEL,4)) client_version_code, LEVEL login_count,
SYSDATE+LEVEL*24/3600 login_time from dual
connect by level<=30)
SELECT
to_char(Min(login_time),'hh24')||'--'||to_char(Max(login_time),'hh24') 时间段,
Sum(decode(client_version_code,'000000000',login_count)) 版本一,
Sum(decode(client_version_code,'000000001',login_count)) 版本二,
Sum(decode(client_version_code,'000000002',login_count)) 版本三,
Sum(decode(client_version_code,'000000003',login_count)) 版本四,
Sum(login_count) 总计
from t
GROUP BY to_number(to_char(login_time,'hh24'))-mod(to_number(to_char(login_time,'hh24')),2)
ORDER BY 1 ;

--结果:
时间段 版本一 版本二 版本三 版本四 总计
---------------------------------------------------
12--13 12 15 18 21 66
14--15 48 51 54 57 210
16--17 52 54 56 27 189

minitoy 2010-11-18
  • 打赏
  • 举报
回复
group by to_number(to_char(alm_date,'yyyymmddhh24'))-mod(to_number(to_char(alm_date,'hh24')),2)

SQL> select to_char(sysdate,'yyyymmddhh24') from dual;

TO_CHAR(SYSDATE,'YYYYMMDDHH24'
------------------------------
2010111711

SQL> select to_number(to_char(sysdate,'yyyymmddhh24'))-mod(to_number(to_char(sysdate,'hh24')),2) from dual;

TO_NUMBER(TO_CHAR(SYSDATE,'YYY
------------------------------
2010111710
YY_MM_DD 2010-11-18
  • 打赏
  • 举报
回复
你按2个小时分为一组,你必须的指定一个开始的时间作为统计的标准。不然我怎么知道哪个算到哪组里。
lxyzxq2008 2010-11-18
  • 打赏
  • 举报
回复
hour(字段)
suhenhappy 2010-11-18
  • 打赏
  • 举报
回复
观看。。。。

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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