【问题标题】:OrientDB average over collectionOrientDB 平均超过集合
【发布时间】:2015-02-19 02:36:21
【问题描述】:

我正在用一些简单的应用程序尝试 orientdb。

在这个应用程序中,我有人物 (persona) 和吃饭的地方 (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;

我是否误解了这种新的图形建模技术?还是有更好的方法来获得这些平均值?

GraphDB

【问题讨论】:

    标签: sql aggregate average orientdb


    【解决方案1】:

    已编辑

    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

    【讨论】:

    • 该查询不会只返回已“评分”的 Sitio(地点)而其他被拒绝吗?
    • 其实问题是 avg 的输出是所有记录的平均值,而不是逐条记录。查看我的更新。
    • 甜蜜!然后我会假设没有办法做到这一点,必须做一些功能。谢谢@vitornesduarte
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2018-08-23
    相关资源
    最近更新 更多