Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Neo4j中使用cypher查询为多个列执行聚合函数_Neo4j_Cypher - Fatal编程技术网

如何在Neo4j中使用cypher查询为多个列执行聚合函数

如何在Neo4j中使用cypher查询为多个列执行聚合函数,neo4j,cypher,Neo4j,Cypher,我在图形数据库中创建了两个节点:起点机场和终点机场。它由一个名为“delayed_by”的属性关联 MATCH (origin:origin_airport {name: row.ORIGIN}), (destination:dest_airport {name: row.DEST}) CREATE (origin)-[:delayed_by {carr_delay: row.carr_delay}]->(destination) CREATE (origin)-

我在图形数据库中创建了两个节点:起点机场和终点机场。它由一个名为“delayed_by”的属性关联

   MATCH (origin:origin_airport {name: row.ORIGIN}), 
   (destination:dest_airport {name: row.DEST})
   CREATE (origin)-[:delayed_by {carr_delay: row.carr_delay}]->(destination)
   CREATE (origin)-[:delayed_by {weather_delay: row.weather_delay}]->    
   (destination)
   CREATE (origin)-[:delayed_by {nas_delay: row.nas_delay}]->(destination)
delayed_by保存因载波延迟、天气延迟和nas延迟而导致的延迟值。在这里,我需要按起点和终点对_进行分组,并使用Neo4j中的cypher查询计算所有3个延迟总和的平均值。以表格格式表示,我的输入文件的格式如下所述:

  ORIGIN    DEST    carr_delay  weather_delay   nas_delay
   ABE        ATL      492         56             56    
   ABE        DTW      412         0              47    
   ABQ        ATL      181         0              218   
我期待的结果在下面的格式

  ORIGIN    DEST     Avg_delay  
   ABE        ATL      201.33          
   ABE        DTW      153         
   ABQ        ATL      133         
我正在使用以下查询:

     MATCH (oa:origin_airport)-[d:delayed_by]->(da:dest_airport)
     RETURN oa.name  AS Origin, da.name AS Destination,            
     AVG((toFloat(d.carr_delay))+(toFloat(d.weather_delay))+ 
     (toFloat(d.nas_delay))) As avg_delay
      ORDER BY avg_delay DESC
      LIMIT 10
但是为平均延迟获取空值

    ORIGIN  DEST     Avg_delay  
     ABE     ATL       NULL
     ABE     DTW       NULL
     ABQ     ATL       NULL

这里的问题是,并不是每个关系都设置了所有属性(
carr\u delay
weather\u delay
nas\u delay

不存在的属性的计算结果为
NULL
——这与
0
不同<代码>平均值(1+NULL)计算为
NULL
。因此,您需要将
NULL
映射到
0
。要考虑使用<代码> CueSeCs<代码>:

MATCH (oa:origin_airport)-[d:delayed_by]->(da:dest_airport)
RETURN oa.name  AS Origin, da.name AS Destination,            
AVG(
  coalesce(toFloat(d.carr_delay),0.0))+
  coalesce(toFloat(d.weather_delay),0.0))+ 
  coalesce(toFloat(d.nas_delay),0.0))
) As avg_delay
ORDER BY avg_delay DESC
LIMIT 10
1) 我建议更改模型:对于延迟关系,添加延迟的属性类型,并将延迟值保存在属性值中

MATCH (origin:origin_airport {name: row.ORIGIN}), 
      (destination:dest_airport {name: row.DEST})
   CREATE (origin)
          -[:delayed_by {type: "carr_delay", value: row.carr_delay}]->
          (destination)
   CREATE (origin)
          -[:delayed_by {type: "weather_delay", value: row.weather_delay}]->
          (destination)
   CREATE (origin)
          -[:delayed_by {type: "nas_delay", value: row.nas_delay}]->
          (destination)
2) 以及所需的查询:

MATCH (oa:origin_airport)-[d:delayed_by]->(da:dest_airport)
RETURN oa.name  AS Origin, 
       da.name AS Destination,            
       AVG( toFloat(d.value) ) As avg_delay
ORDER BY avg_delay DESC
LIMIT 10

当我试图更改模型时,我收到一个错误,它不接受“type”“value”格式。。我已经在另一篇文章中解释了我的错误。