3

arangoDB (2.3.1) インスタンスで AQL クエリを実行して、2 つの平均 ( average_value ) 間のデルタを計算したいと思います ( resは別のサブクエリの結果である可能性があります)。

LET last = (FOR r in res
    FILTER DATE_MONTH(r.date) == 1 AND DATE_YEAR(r.date) == 2015
    COLLECT name = r.name INTO g
    RETURN {"name":name,"average_value":AVERAGE(g[*].r[*].value)}
    )
LET current = (FOR r in res
    FILTER DATE_MONTH(r.date) == 2 AND DATE_YEAR(r.date) == 2015
    COLLECT name = r.name INTO g
    RETURN {"name":name,"average_value":AVERAGE(g[*].r[*].value)}
    )
FOR l IN last
    FOR c IN current
         FILTER c.name == l.name
         RETURN {"name":c.name,"delta":c.average_value-l.average_value}

しかし、それだけでも

FOR l IN last
    RETURN l

「名前」は取得できますが、「平均値」は null になります。これは設計どおりに機能していますか、またはサブクエリから集計値にアクセスするにはどうすればよいですか?

4

1 に答える 1

2

データにアクセスできないと、それ.r[*].valueが問題を引き起こしているように思えます。

が定義されている 2 つのFORループ内には、1 つのドキュメントへの参照があります。演算子はリスト/配列でのみ使用できるため、単一のドキュメントで展開演算子 ( ) を使用すると、 が生成されます。rr[*]null[*]

代わりにできることは、の代わりに just を使用すること.r.valueです.r[*].value。次に、arangodb データベースは、必要な処理を実行する必要があります。

于 2015-03-04T09:34:55.017 に答える