Neo4j Cypher从单个查询返回多个计数

0dxa2lsx  于 2023-01-30  发布在  其他
关注(0)|答案(2)|浏览(221)

出于分析目的,我需要从单个查询返回多个计数。
例如,我有一个User实体,用户有active属性true/false
有没有可能用Cypher编写一个查询,返回所有用户的总数,以及活动用户和非活动用户的2个额外计数?如果有,请说明如何实现。

t0ybt7op

t0ybt7op1#

下面是活动用户和非活动用户的计数。它类似于SQL,其中使用了sum()函数和条件子句“case when”。

MATCH (n:Person) 
RETURN count(n) as user_counts, 
      sum(case when n.active then 1 end) as active, 
      sum(case when not n.active then 1 end) as inactive,
      sum(case when n.active is NULL then 1 end) as no_info

使用影片数据库中的Persons节点的示例结果

╒═════════════╤════════╤══════════╤═════════╕
│"user_counts"│"active"│"inactive"│"no_info"│
╞═════════════╪════════╪══════════╪═════════╡
│133          │121     │7         │5        │
└─────────────┴────────┴──────────┴─────────┘
f0brbegy

f0brbegy2#

我们可以简单地用途:

Match(p:Persons)`
RETURN count(p) as total_user,
  sum(case when not p.active then 1 end) as inactive_users,
  sum(case when p.active then 1 end) as active_users,
  sum(case when p.active is NULL then 1 end) as remaining_users

相关问题