根据角色和地位统计人员
Statistic people base on role and status
我现在正在制作一个使用 neo4j 作为我的数据库的应用程序。
我有一个 class:
class Person
{
public string Id{get;set;}
public int Role{get;set;}
public int Status {get;set;}
}
现在我有 50 个节点,其中 25 个是:
{
Id : <GUID>
Role: 3,
Status : 0
}
另外25个是:
{
Id: <GUID>
Role: 3,
Status : 2
}
我想根据角色和地位来统计人。
有了上面的那些记录,我有:
25人角色3,状态0
25人角色3,状态2
我试过这个查询:
MATCH (a:Person), (b:Person)
WHERE (a.Status = 0 AND a.Role = 3) OR (b.Status = 2 AND b.Role = 3)
RETURN COUNT(a), COUNT(b)
而不是 25、25。
它给了我:6976, 6976
不知道是什么问题
有人可以帮我吗?
谢谢。
P/S: 我正在使用 graphenedb。
你的陈述构建了图中所有人的叉积。
试试这个
MATCH (p:Person)
RETURN p.Role, p.Status, count(*)
Cypher 中没有 "group by"。如果你使用像 count
这样的聚合函数,聚合会自动在其他表达式上完成(这里是 p.Role
和 p.Status
)。
我现在正在制作一个使用 neo4j 作为我的数据库的应用程序。 我有一个 class:
class Person
{
public string Id{get;set;}
public int Role{get;set;}
public int Status {get;set;}
}
现在我有 50 个节点,其中 25 个是:
{
Id : <GUID>
Role: 3,
Status : 0
}
另外25个是:
{
Id: <GUID>
Role: 3,
Status : 2
}
我想根据角色和地位来统计人。 有了上面的那些记录,我有:
25人角色3,状态0
25人角色3,状态2
我试过这个查询:
MATCH (a:Person), (b:Person)
WHERE (a.Status = 0 AND a.Role = 3) OR (b.Status = 2 AND b.Role = 3)
RETURN COUNT(a), COUNT(b)
而不是 25、25。
它给了我:6976, 6976
不知道是什么问题
有人可以帮我吗? 谢谢。
P/S: 我正在使用 graphenedb。
你的陈述构建了图中所有人的叉积。
试试这个
MATCH (p:Person)
RETURN p.Role, p.Status, count(*)
Cypher 中没有 "group by"。如果你使用像 count
这样的聚合函数,聚合会自动在其他表达式上完成(这里是 p.Role
和 p.Status
)。