2015-02-13 3 views
0

Im пытается orientdb с некоторыми простыми приложениями.ОриентDB в среднем за сбор

В этом приложении у меня есть люди (персона) и места, где можно поесть (sitio), люди идут в эти места (я храню, сколько раз они делают) и забивают их.

Используя этот запрос:

SELECT *, 
inE('puntua').comida as comida, 
inE('puntua').servicio as servicio, 
inE('puntua').extras as extras 
from Sitio 

мне удалось получить все места с его оценкой, но функция баллов в массиве, и я не могу применить Avg().

Data Returned By Query

tldr;

Я не понимаю эту новую технологию моделирования графиков? или есть лучший aproach, чтобы получить эти средние значения?

GraphDB

ответ

0

EDITED

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 function:

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.

+0

Не будет ли этот запрос возвращать только Sitio (места), который был «забит», а другие будут отклонены? – josegomezr

+0

На самом деле проблема заключается в том, что вывод avg - это среднее значение всех записей, а не запись по записи. См. Мое обновление. – vitorenesduarte

+0

Сладкий! то я буду считать, что нет никакого способа сделать это родным и должен сделать некоторые функции. Спасибо @vitornesduarte – josegomezr

Смежные вопросы