Orientdb 按时间间隔分组分钟

Orientdb 按时间间隔分组分钟,orientdb,orientdb2.2,Orientdb,Orientdb2.2,如果我使用的是Oracle,这个问题将在几分钟内通过使用rank over函数得到解决,然而,orientdb并没有这样做,也没有出现在它的路线图中 我目前有一个要求,以分钟为单位按时间间隔对物业和组数据进行平均 以15分钟为时间跨度,每分钟15条记录/1条记录,我需要能够以5分钟为间隔对数据进行分组 我的数据结构如下所示 我的最终结果应该是 平均值(最后)。。。。。分组分钟 0.00103445……|。。。。。。五, 0.00103441……|。。。。。。十, 0.0010344……|。。。

如果我使用的是Oracle,这个问题将在几分钟内通过使用rank over函数得到解决,然而,orientdb并没有这样做,也没有出现在它的路线图中

我目前有一个要求,以分钟为单位按时间间隔对物业和组数据进行平均

以15分钟为时间跨度,每分钟15条记录/1条记录,我需要能够以5分钟为间隔对数据进行分组

我的数据结构如下所示

我的最终结果应该是

平均值(最后)。。。。。分组分钟


0.00103445……|。。。。。。五,

0.00103441……|。。。。。。十,

0.0010344……|。。。。。。十五

样本数据

create class times
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049611',7,29,19,0)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049634',7,29,19,1)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049654',7,29,19,2)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049660',7,29,19,3)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049655',7,29,19,4)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049654',7,29,19,5)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049677',7,29,19,6)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049654',7,29,19,7)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049698',7,29,19,8)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049687',7,29,19,9)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049633',7,29,19,10)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049622',7,29,19,11)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049643',7,29,19,12)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049634',7,29,19,13)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049657',7,29,19,14)
insert into times (exe, Last, month, day, hour, minute) values ('EXE','0.1049698',7,29,19,15)

我很快编写了一个js函数,它可能会帮助您入门,请记住,它没有经过优化,因为它不会计算不同日期之间的平均值:

var g = orient.getGraph();
var query = g.command("SQL", "SELECT * FROM times ORDER BY month, day, hour, minute");

var avg = 0, group = 0;
var prev_month, prev_day, prev_hour, prev_minute;
var record = [];

for(var i = 0; i < query.length; i++)
{
    var month = query[i].getRecord().field("month").toString();
    var day = query[i].getRecord().field("day").toString();
    var hour = query[i].getRecord().field("hour").toString();
    var minute = parseInt(query[i].getRecord().field("minute").toString());

    if((minute == (prev_minute + 1) && day == prev_day && hour == prev_hour && month == prev_month) || i == 0)
    {
        avg += parseFloat(query[i].getRecord().field("Last").toString());
        group++;

        if(group >= 5 || group >= (query.length-i)+2)
        {
            record.push((avg / group).toString().substring(0,11));
            avg = 0;
            group = 0;
        }
    }
    else
    {
        record.push((avg / group).toString().substring(0,11));
        avg = 0;
        group = 0;

        avg += parseFloat(query[i].getRecord().field("Last").toString());
        group++;

        if(group >= (query.length-i)+2)
        {
            record.push((avg / group).toString().substring(0,11));
            avg = 0;
            group = 0;
        }
    }

    prev_month = month;
    prev_day = day;
    prev_hour = hour;
    prev_minute = minute;
}

return record;
var g=orient.getGraph();
var query=g.command(“SQL”,“按月、日、小时、分钟从时间顺序选择*);
var平均值=0,组=0;
var上个月、上个日、上个小时、上个分钟;
var记录=[];
for(var i=0;i=5 | |组>=(query.length-i)+2)
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
}
}
其他的
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
avg+=parseFloat(查询[i].getRecord().field(“Last”).toString());
组++;
如果(组>=(query.length-i)+2)
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
}
}
上个月=月份;
上一天=天;
上一小时=小时;
上一分钟=分钟;
}
返回记录;

我很快编写了一个js函数,它可能会帮助您入门,请记住,它没有经过优化,因为它不会计算不同日期之间的平均值:

var g = orient.getGraph();
var query = g.command("SQL", "SELECT * FROM times ORDER BY month, day, hour, minute");

var avg = 0, group = 0;
var prev_month, prev_day, prev_hour, prev_minute;
var record = [];

for(var i = 0; i < query.length; i++)
{
    var month = query[i].getRecord().field("month").toString();
    var day = query[i].getRecord().field("day").toString();
    var hour = query[i].getRecord().field("hour").toString();
    var minute = parseInt(query[i].getRecord().field("minute").toString());

    if((minute == (prev_minute + 1) && day == prev_day && hour == prev_hour && month == prev_month) || i == 0)
    {
        avg += parseFloat(query[i].getRecord().field("Last").toString());
        group++;

        if(group >= 5 || group >= (query.length-i)+2)
        {
            record.push((avg / group).toString().substring(0,11));
            avg = 0;
            group = 0;
        }
    }
    else
    {
        record.push((avg / group).toString().substring(0,11));
        avg = 0;
        group = 0;

        avg += parseFloat(query[i].getRecord().field("Last").toString());
        group++;

        if(group >= (query.length-i)+2)
        {
            record.push((avg / group).toString().substring(0,11));
            avg = 0;
            group = 0;
        }
    }

    prev_month = month;
    prev_day = day;
    prev_hour = hour;
    prev_minute = minute;
}

return record;
var g=orient.getGraph();
var query=g.command(“SQL”,“按月、日、小时、分钟从时间顺序选择*);
var平均值=0,组=0;
var上个月、上个日、上个小时、上个分钟;
var记录=[];
for(var i=0;i=5 | |组>=(query.length-i)+2)
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
}
}
其他的
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
avg+=parseFloat(查询[i].getRecord().field(“Last”).toString());
组++;
如果(组>=(query.length-i)+2)
{
record.push((平均/组).toString().substring(0,11));
平均值=0;
组=0;
}
}
上个月=月份;
上一天=天;
上一小时=小时;
上一分钟=分钟;
}
返回记录;

您可以通过javascript函数创建它。函数生成一个查询,该查询每tot分钟检索一次数据(例如,从开始时间到结束时间的5分钟),并返回[average--group]。谢谢,这是我当前的开发路径。然而,我想知道在DB级别是否有一些东西可以帮助解决这个问题。也许通过javascript函数,您可以创建它。函数生成一个查询,该查询每tot分钟检索一次数据(例如,从开始时间到结束时间的5分钟),并返回[average--group]。谢谢,这是我当前的开发路径。然而,我想知道在DB级别是否有一些东西可以帮助完成挑战。