Sql 如何对特定时间段进行汇总和分组

Sql 如何对特定时间段进行汇总和分组,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有30分钟的数据,我想计算从当前日期凌晨2:00到下一个日期凌晨2:00的白天小时数和分组数,我该怎么做 create table test (code varchar2(50), hour number, daytime date); insert into test (code, hour, daytime) values ('K11','0.5','23-Feb-17') insert into test (code, hour, daytime) values ('K11','0.

我有30分钟的数据,我想计算从当前日期凌晨2:00到下一个日期凌晨2:00的白天小时数和分组数,我该怎么做

create table test (code varchar2(50), hour number, daytime date); 

insert into test (code, hour, daytime) values ('K11','0.5','23-Feb-17')
insert into test (code, hour, daytime) values ('K11','0.5','23-02-17 00:30')
insert into test (code, hour, daytime) values ('K11','0.5','23-02-17 01:00')
insert into test (code, hour, daytime) values ('K11','0.5','23-02-17 01:30')
insert into test (code, hour, daytime) values ('K11','0.5','23-02-17 02:00')
insert into test (code, hour, daytime) values ('K11','0.5','23-02-17 02:30')
insert into test (code, hour, daytime) values ('K11','0.5','24-Feb-17')
insert into test (code, hour, daytime) values ('K11','0.5','24-02-17 00:30')
insert into test (code, hour, daytime) values ('K11','0.5','24-02-17 01:00')
insert into test (code, hour, daytime) values ('K11','0.5','24-02-17 01:30')
insert into test (code, hour, daytime) values ('K11','0.5','24-02-17 02:00')
insert into test (code, hour, daytime) values ('K11','0.5','24-02-17 02:30')
insert into test (code, hour, daytime) values ('K12','0.5','23-Feb-17')
insert into test (code, hour, daytime) values ('K12','0.5','23-02-17 00:30')
insert into test (code, hour, daytime) values ('K12','0.5','23-02-17 01:00')
insert into test (code, hour, daytime) values ('K12','0.5','23-02-17 01:30')
insert into test (code, hour, daytime) values ('K12','0.5','23-02-17 02:00')
insert into test (code, hour, daytime) values ('K12','0.5','23-02-17 02:30')
insert into test (code, hour, daytime) values ('K12','0.5','24-Feb-17')
insert into test (code, hour, daytime) values ('K12','0.5','24-02-17 00:30')
insert into test (code, hour, daytime) values ('K12','0.5','24-02-17 01:00')
insert into test (code, hour, daytime) values ('K12','0.5','24-02-17 01:30')
insert into test (code, hour, daytime) values ('K12','0.5','24-02-17 02:00')
insert into test (code, hour, daytime) values ('K12','0.5','24-02-17 02:30')
最后,我想得到以下数据:

'K11',3,'23-02-17'
'K12',3,'23-02-17'

例如,它将K11的小时数从('K11','0.5','23-02-17 02:00')加至('K11','0.5','24-02-17 01:00')

你可以通过减去两个小时来实现这一点。这里有一种方法:

select trunc(date - 2/24) as dte, sum(hours)
from t
group by trunc(date - 2/24)
order by dte;
Oracle现在支持
interval
语法,因此您还可以:

select trunc(date - interval 2 hour) as dte, sum(hours)
from t
group by trunc(date - interval 2 hour)
order by dte;

不,这不起作用,它增加了两个小时,就是这样,但没有分组。@JoeGreen。我不明白你的评论。首先,这减去两个小时,但不加上它们。其次,
groupby
进行聚合。