Oracle实现对查询结果每N条再次分组

问题描述:
Oracle实现对查询结果每N条再次分组_第1张图片

原始数据:
*.DMP文件见http://download.csdn.net/detail/u012920086/9138513,账号密码都是lanbin,有兴趣的朋友可以导入学习下

Select sid,time,pre_1h from livedata live
where live.time <= to_date('2015-09-24 12:00:00', 'yyyy-mm-dd hh24:mi:ss') and live.time > to_date('2015-09-23 12:00:00', 'yyyy-mm-dd hh24:mi:ss')
and sid = 'A2401'
order by time

Oracle实现对查询结果每N条再次分组_第2张图片

解决办法:

SELECT floor(rownum/3) AS groupid ,SUM(live.pre_1h),MAX(live.time) max_time from livedata live
where live.time <= to_date('2015-09-24 12:00:00', 'yyyy-mm-dd hh24:mi:ss') 
and live.time > to_date('2015-09-23 12:00:00', 'yyyy-mm-dd hh24:mi:ss')
and sid = 'A2401'
group by  floor(rownum/3) order by max_time

Oracle实现对查询结果每N条再次分组_第3张图片

知识点:
1、Oracle导出语句

expdp lanbin/lanbin dumpfile=wq20150925.DMP  directory=DATA_PUMP_DIR schemas=lanbin

2、ROWNUM是一种伪列,它会根据返回记录生成一个序列化的数字。利用ROWNUM,我们可以生产一些原先难以实现的结果输出。以后有空再学习下ROWNUM,rowid的相关知识

你可能感兴趣的:(oracle)