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

如何筛选在存在争议交易的多家零售商工作的员工(Cypher)

解决Neo4j查询需求:找出在至少2家有争议交易的零售商工作的员工

图结构回顾

  • 节点类型:Employee、Retailer、Customer
  • 关系:
    • Employee-[:WORKS_AT]->Retailer:员工关联其工作的零售商
    • Customer-[:SHOPPED_AT {status: "Disputed"}]->Retailer:顾客关联存在争议交易的零售商

正确的Cypher查询语句

MATCH (e:Employee)-[:WORKS_AT]->(r:Retailer)
// 过滤出存在争议交易的零售商
WHERE EXISTS {
    MATCH (c:Customer)-[:SHOPPED_AT {status: "Disputed"}]->(r)
}
// 按员工分组,统计其关联的符合条件的零售商数量(去重避免重复统计同一家)
WITH e, COUNT(DISTINCT r) AS validRetailerCount
// 筛选出至少在2家符合条件零售商工作的员工
WHERE validRetailerCount >= 2
// 返回结果,可根据需求调整返回字段
RETURN e.name AS employeeName, validRetailerCount

对之前查询问题的分析

  • 版本1问题:缺少最后一步WHERE validRetailerCount >= 2的过滤逻辑,导致统计结果包含了仅在1家符合条件零售商工作的员工。
  • 版本2问题:集合处理时未校验零售商是否存在争议交易,错误将员工所有工作过的零售商(比如无争议的Gap)都纳入统计,导致数量计算虚高,误把不符合条件的员工纳入结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:12