You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j中如何获取每个房产最新交易的地址及交易详情?

解决Neo4j中获取每个地址最新交易详情的问题

这是个很常见的聚合查询陷阱——当你把max()这类聚合函数和未聚合的交易详情字段(比如td.purchase_price、td.lease_type)放在同一个RETURN里时,Neo4j会将所有非聚合字段视为分组依据,相当于按地址+交易详情的组合分组,自然会返回该地址下的所有交易记录。

要实现“每个地址只返回最新交易的地址信息+对应交易详情”的需求,我们可以分两步来做:先找到每个地址的最新交易日期,再通过这个日期匹配对应的完整交易记录。具体查询语句如下:

// 第一步:分组计算每个地址的最新交易日期
MATCH (:Property)<-[:ADDRESS_OF]-(a:Address)<-[:PROPERTY_TRANSACTION]-(td:Transaction_details)
WITH a, max(td.purchase_date) AS latest_purchase_date

// 第二步:匹配该地址下日期等于最新日期的交易详情
MATCH a<-[:PROPERTY_TRANSACTION]-(latest_td:Transaction_details)
WHERE latest_td.purchase_date = latest_purchase_date

// 返回需要的地址和交易详情字段
RETURN 
  a.id, 
  a.address_line_1, 
  a.address_line_2, 
  a.address_line_3, 
  a.postcode, 
  latest_td.purchase_date, 
  latest_td.purchase_price, 
  latest_td.lease_type
ORDER BY a.id

补充说明:

如果某个地址在同一天有多笔交易(这种场景比较少见),上述查询会返回该地址的多条结果。如果需要强制每个地址只返回一条,可以在第二步匹配后添加WITH a, latest_td LIMIT 1来限制,但前提是你接受任意一条同一天的交易作为“最新”;或者根据其他字段(比如交易ID)进一步筛选最末的那笔。

内容的提问来源于stack exchange,提问作者SAB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:26:00