簡體   English   中英

Neo4J在多個節點上平均數值屬性

[英]Neo4J averaging numeric property over several nodes

我有一張大圖,而Neo4J恰好兩天,即zilch。

我想計算具有一定數值屬性的所有節點上的平均值,只要它出現在節點(n)就說n.prop_01 然后,我想獲取其節點的n.prop_01屬性低於平均值的節點,具體取決於平均值。

我在文檔或在線論壇上找不到答案或啟發性的內容。 我嘗試了以下內容以及更多...

MATCH (n) WHERE exists(n.prop_01)
WITH n, collect(n.prop_01) AS all_prop_01
UNWIND all_prop_01 as all_prop
WITH n,prop_01,avg(all_prop) AS avg_prop
WHERE n.prop_01 < (1.1*avg_prop)
RETURN n.name,n.prop_01  LIMIT 20;

結果:( (no changes, no records)

感謝您提出任何指示,說明為什么這種方式不起作用以及如何使其起作用。

您需要先計算平均值,然后進行過濾,否則展開時,平均值等於每個節點的屬性:

MATCH (n) WHERE exists(n.prop_01)
WITH avg(n.prop_01) as avg_prop
MATCH (n) WHERE exists(n.prop_01) AND n.prop_01 < 1.1 * avg_prop
RETURN count(n), avg_prop

將節點與prop_01匹配時,可以計算上游的平均值。

您還應該考慮在匹配項中添加標簽,以減少查詢需要瀏覽的節點數。

您還可以收集n節點,而不僅僅是prop_01 ,然后在展開時使用它。

MATCH (n:Add_A_Node_Label_Here)
WHERE exists(n.prop_01)
WITH collect(n) AS all_n, avg(n.prop_01) as avg_prop
UNWIND all_n as n
WITH n, avg_prop
WHERE n.prop_01 < (1.1 * avg_prop)
RETURN n.name, n.prop_01  
LIMIT 20;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM