以下のクエリでは、パスに存在するユーザーの平均年齢を調べるにはどうすればよいですか?
start begin=node:Nodes(Name="User_2"), end=node:Nodes(Name="User_32")
match p = begin--()--end
return extract(n in nodes(p): n.Age);
以下のクエリでは、パスに存在するユーザーの平均年齢を調べるにはどうすればよいですか?
start begin=node:Nodes(Name="User_2"), end=node:Nodes(Name="User_32")
match p = begin--()--end
return extract(n in nodes(p): n.Age);
サイファー1.8では、最初のクエリを修正するだけです:
start begin=node:Nodes(Name="User_2"), end=node:Nodes(Name="User_32")
match begin--middle--end
where has(middle.Age)
return sum(middle.Age) / count(middle);
ただし、User_2 から User_32 までのすべてのユーザーを要求すると思います。
start n=node(*)
where has(n.Age) and Id(n)>1 and Id(n)<33
return sum(n.Age) / count(n);
ただし、最後のケースで、User1 と User32 の間のパスにあるすべてのユーザーを要求する場合:
start begin=node:Nodes(Name="User_2"), end=node:Nodes(Name="User_32")
match p=begin-[*..]-end
with extract(n in nodes(p): n)
where has(n.Age)
return sum(n.Age) / count(n);
編集: sum(n.Age) / count(n);を置き換えることができることがわかりました。単純にavg(n.Age)
したがって、1.9 では、これを で実行できるようになりましたreduce
。
start begin=node:Nodes(Name="User_2"), end=node:Nodes(Name="User_32")
match p = begin--()--end
return reduce(total=0, n in nodes(p): total + n.Age) / length(p) as avgAge;