OrientDB 集合的平均值
OrientDB average over collection
我正在使用一些简单的应用程序尝试 orientdb。
在这个应用程序中,我有人物 (persona) 和吃饭的地方 (sitio),人们去那些地方(我存储他们去了多少次)并给他们打分。
使用此查询:
SELECT *,
inE('puntua').comida as comida,
inE('puntua').servicio as servicio,
inE('puntua').extras as extras
from Sitio
我设法获得了所有分数的位置,但数组中的分数我无法应用 Avg() 函数。
tldr;
我是不是误解了这种新的图形建模技术?或者有更好的方法来获得这些平均值?
已编辑
create class Puntua extends E
create class Sitio extends V
create class Persona extends V
create vertex Persona set name = 'person' # returns #17:0
create vertex Sitio set place = 'mcdonals' # returns #16:0
create vertex Sitio set place = 'burgerking'
create vertex Sitio set place = 'glicinia' # returns #16:2
create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 9, = extras = 7
create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 7, = extras = 9
create edge Puntua from 17:0 to 16:2 set comida = 8, servicio = 7, = extras = 9
如果以上是你的情况,我相信你正在寻找的查询是这样的:
SELECT *, myAvg(comida), myAvg(servicio), myAvg(extras)
FROM (
SELECT place,
inE('Puntua').comida as comida,
inE('Puntua').servicio as servicio,
inE('Puntua').extras as extras
FROM Sitio
)
其中 myAvg 是一个 javascript 函数:
var graph = orient.getGraph();
var res = graph.command( "sql", "select avg(list) from (select " + list + " as list)");
if(res.length > 0){
return res[0].getRecord().field('avg');
} else{
return null;
}
喜欢here。 (注意列表参数)
输出为this。
我正在使用一些简单的应用程序尝试 orientdb。
在这个应用程序中,我有人物 (persona) 和吃饭的地方 (sitio),人们去那些地方(我存储他们去了多少次)并给他们打分。
使用此查询:
SELECT *,
inE('puntua').comida as comida,
inE('puntua').servicio as servicio,
inE('puntua').extras as extras
from Sitio
我设法获得了所有分数的位置,但数组中的分数我无法应用 Avg() 函数。
tldr;
我是不是误解了这种新的图形建模技术?或者有更好的方法来获得这些平均值?
已编辑
create class Puntua extends E
create class Sitio extends V
create class Persona extends V
create vertex Persona set name = 'person' # returns #17:0
create vertex Sitio set place = 'mcdonals' # returns #16:0
create vertex Sitio set place = 'burgerking'
create vertex Sitio set place = 'glicinia' # returns #16:2
create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 9, = extras = 7
create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 7, = extras = 9
create edge Puntua from 17:0 to 16:2 set comida = 8, servicio = 7, = extras = 9
如果以上是你的情况,我相信你正在寻找的查询是这样的:
SELECT *, myAvg(comida), myAvg(servicio), myAvg(extras)
FROM (
SELECT place,
inE('Puntua').comida as comida,
inE('Puntua').servicio as servicio,
inE('Puntua').extras as extras
FROM Sitio
)
其中 myAvg 是一个 javascript 函数:
var graph = orient.getGraph();
var res = graph.command( "sql", "select avg(list) from (select " + list + " as list)");
if(res.length > 0){
return res[0].getRecord().field('avg');
} else{
return null;
}
喜欢here。 (注意列表参数)
输出为this。