表内所存的数据的时间间隔为5分钟,地点代码 总数量 开始时间
4000001 0 2010-1-6 17:00:00
4000001 200 2010-1-6 17:05:00
4000001 300 2010-1-6 17:10:00
4000001 100 2010-1-6 17:15:00
4000001 150 2010-1-6 17:20:00
4000001 101 2010-1-6 17:25:00
4000001 202 2010-1-6 17:30:00
4000001 220 2010-1-6 17:35:00
..... ... ......现因报表需要,需要将表内的数据按15分钟的间隔或30分钟的间隔统计出来,如果不用存储过程,SQL语句能实现吗?
想要的结果集如下:地点代码 总数量 开始时间
4000001 0 2010-1-6 17:00:00
4000001 600 2010-1-6 17:15:00
4000001 453 2010-1-6 17:30:00
....... ... .....
4000001 0 2010-1-6 17:00:00
4000001 200 2010-1-6 17:05:00
4000001 300 2010-1-6 17:10:00
4000001 100 2010-1-6 17:15:00
4000001 150 2010-1-6 17:20:00
4000001 101 2010-1-6 17:25:00
4000001 202 2010-1-6 17:30:00
4000001 220 2010-1-6 17:35:00
..... ... ......现因报表需要,需要将表内的数据按15分钟的间隔或30分钟的间隔统计出来,如果不用存储过程,SQL语句能实现吗?
想要的结果集如下:地点代码 总数量 开始时间
4000001 0 2010-1-6 17:00:00
4000001 600 2010-1-6 17:15:00
4000001 453 2010-1-6 17:30:00
....... ... .....
from table1
group by 地点代码,trunc(开始时间,'hh')+ceil((开始时间-trunc(开始时间,'hh'))/15*1440)/1440*15
order by 1,3;
FROM t2
WHERE t2.total = 0
UNION ALL
SELECT code, total, (SELECT MIN(t2.atime) FROM t2) + (grp + 1) * 15 / 1440 AS atime
FROM (SELECT t.code, trunc(to_number(to_char(atime, 'mi')) / (15+1), 0) AS grp, SUM(total) total
FROM t2 t
GROUP BY t.code, trunc(to_number(to_char(atime, 'mi')) / (15+1), 0));
FROM (SELECT * FROM test ORDER BY 开始时间) t
GROUP BY (ceil(rownum / 3))