2017-05-25 96 views
0

我在我的Neo4j圖表上做了一些分析,並知道我正陷入另一個問題。 我的工作查詢如下:計算介於中心性和顯示百分比

MATCH p=allShortestPaths((source:Person)-[:KNOWS*]-(target:Person)) 
WHERE id(source) < id(target) and length(p) > 1 
UNWIND nodes(p)[1..-1] AS n 
RETURN n.id AS id, n.firstname AS firstname, n.lastname AS lastname, count(*) as betweenness 
ORDER BY betweenness DESC 

這個工作正常,給我這樣一個列表:

result betweenness

到目前爲止,一切都很好。但是現在我想有一個額外的列,其中顯示了基於所有最短路徑的百分比值。 從來就試圖簡單地添加100.0 * SUM(betweenness)/count(p) AS percent但這會導致錯誤可變betweenness沒有定義(4號線,列119(偏移:267))

如果有人知道如何處理這個問題,請你告訴我。)

在此先感謝,歡呼!

回答

0

使用WITH

  • p和其他屬性使用WITH下一個背景。
  • betweenness計算percent並全部返回。

試試:

MATCH p=allShortestPaths((source:Person)-[:KNOWS*]-(target:Person)) 
WHERE id(source) < id(target) and length(p) > 1 
UNWIND nodes(p)[1..-1] AS n 
WITH p, n.id AS id, n.firstname AS firstname, n.lastname AS lastname, count(*) as betweenness 
RETURN id, firstname, lastname, betweenness, 100.0 * SUM(betweenness)/count(p) AS percent 
ORDER BY betweenness DESC 
+0

確定..從來就測試了這個查詢,但後來我的中介因子是「1」,所有節點和比例因子是「100」 – Andy

+0

嗯..嘗試:MATCH p = allShortestPaths((source:Person) - [:KNOWS *] - (target:Person)) WHERE id(source) 1 UNWIND nodes )[1 ..- 1] AS n WITH count(p)as countP,n.id AS id,n.firstname AS firstname,n.lastname AS lastname,count(*)as between RETURN id,firstname,lastname ,betweenness,100.0 * SUM(介於)/ countP AS percen t ORDER BY betweenness DESC'如果有效,我會編輯我的答案。 –