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

如何编写按列分组取另一列最大值的Neo4j查询语句

SQL转Neo4j等效查询实现

Neo4j的Cypher语法没有显式的GROUP BY子句,分组逻辑是隐式触发的,完全可以实现按字段分组取最大值的需求。

对应Cypher语句

如果screens是你的节点标签,col1、col2为节点属性,等效查询如下:

MATCH (s:screens)
RETURN s.col2 AS col2, max(s.col1) AS max_col1

逻辑说明

  • Cypher的隐式分组规则:在RETURN或WITH子句中,只要同时存在普通字段和聚合函数,Cypher会自动将所有未被聚合函数包裹的字段作为分组键,该规则对所有聚合函数生效,并非仅支持count(*)类统计。
  • 上述查询返回结果与原SQL完全一致:每行对应一个唯一的col2值,配套返回该分组下col1的最大值。

扩展用法

如果需要对分组聚合后的结果做过滤(对应SQL的HAVING语义),比如仅保留col1最大值大于10的分组,可通过WITH承接聚合结果后加过滤条件:

MATCH (s:screens)
WITH s.col2 AS col2, max(s.col1) AS max_col1
WHERE max_col1 > 10
RETURN col2, max_col1

如果col1、col2是关系属性而非节点属性,仅需调整MATCH子句匹配对应关系即可,聚合分组逻辑无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:57:22