neo4j圖算法來計算最終實控人

       

       傳統實現方法:我們需要通過分析股權關係,遞歸循環出股東與目標公司的所有直接間接關係,再定義全局變量來存儲每個股東計算出來的股權佔比,最後再做比較,取最大的那個。


neo4j圖算法:(一句cql搞定以上覆雜邏輯)
原理分析:以計算上海起航爲例,計算上海起航股東最終持股數
(1)根據neo4j可以直觀看出上海起航所有股東一層佔比
(2)其中股東蔡裕龍直接持股59.53%,間接通過 上海最客 持股98%*4.76% 間接通過 上海泰一 持股66%*14.27%
(3)股東蔡裕龍最終持股 59.53% + 98%*4.76%+66%*14.27% = 73.613%
最終計算結果可以看出,股東最終佔比只需要計算目標節點與一層股東節點之間的所有路徑佔比求和即可。

 
Cql實現邏輯:
MATCH (n:Company{name:'上海起航'})<-[r]-(m) WITH n,m MATCH (m)-[r*]->(n) with m,REDUCE(x = 1, a IN r | x * a.radio/100) AS radio
ORDER BY radio DESC
return distinct m.name,sum(radio) radio limit 1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章