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

如何用Neo4j Cypher单查询返回多组用户统计计数?

单个Cypher查询同时返回多组用户统计计数

当然可以通过单个Cypher查询实现需求,下面提供两种实用的实现方式:

方法一:使用COUNT()结合CASE表达式

直接在聚合阶段一次性计算所有统计指标,写法简洁直观:

MATCH (u:User)
RETURN
  COUNT(u) AS total_users,
  COUNT(CASE WHEN u.active = true THEN 1 END) AS active_users,
  COUNT(CASE WHEN u.active = false THEN 1 END) AS inactive_users

原理:CASE语句仅在满足条件时返回1,否则返回NULL;而COUNT()函数会自动忽略NULL值,以此分别统计出活跃、非活跃用户数,COUNT(u)则直接得到用户总数。

方法二:先分组统计再汇总

先按active属性分组统计各状态的用户数,再汇总成目标指标,适合后续需要扩展更多用户状态的场景:

MATCH (u:User)
WITH u.active AS is_active, COUNT(u) AS count
WITH
  SUM(count) AS total_users,
  SUM(CASE WHEN is_active = true THEN count ELSE 0 END) AS active_users,
  SUM(CASE WHEN is_active = false THEN count ELSE 0 END) AS inactive_users
RETURN total_users, active_users, inactive_users

原理:第一步按用户活跃状态分组计数,第二步通过SUM()结合CASE将分组结果整合为需要的三个统计值,扩展性更强。

补充说明

如果部分User节点不存在active属性,上述查询不会将其计入活跃或非活跃用户。若需要把无active属性的用户视为非活跃,可以调整非活跃用户的统计条件:

COUNT(CASE WHEN u.active <> true THEN 1 END) AS inactive_users

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:20:34