首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一查询中计数neo4j中节点的总数和小计

在同一查询中计数neo4j中节点的总数和小计
EN

Stack Overflow用户
提问于 2016-11-14 12:02:40
回答 1查看 342关注 0票数 0

我想在cypher中创建一个all in one语句来填充数据表。两个字段计算Sample的数量:一个显示总数,另一个显示没有附加:Ghost标签的数字:

代码语言:javascript
复制
 MATCH (a:Person)-[:OWNER]->(b:Project)-[:PROJECT]->(c:Import)-[:IMPORT|:INPUT|:OUTPUT*]->(d:Sample)
WITH a,b,c,d,d AS e WHERE NOT d:Ghost
RETURN DISTINCT b.Name,(a.`First Name` + " " + a.`Last Name`),b.Description,b.Date,count(DISTINCT c),count(DISTINCT d),count(DISTINCT e)

问题是de得出了相同的值,而实际上e应该小于d。我怀疑de以某种方式指向同一个地址。我可以通过MATCH再次查询图形来解决这个问题,但是很明显,这是很昂贵的,我宁愿只做一次。有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-14 15:12:56

WHERE过滤WITH返回的内容,并且只得到非Ghost节点。将CASE用于条件结果:

代码语言:javascript
复制
WITH a, b, c, d,
     CASE
         WHEN d:Ghost THEN null
         ELSE d
     END AS e

您还可以为结果创建不同的示例节点,然后获取原始列表和筛选列表的大小(因此不会重复两次):

代码语言:javascript
复制
WITH DISTINCT b.Name AS projectName,
     (a.`First Name` + " " + a.`Last Name`) AS fullName,
     b.Description AS projectDescription,
     b.Date AS projectDate,
     count(DISTINCT c) AS importCount,
     collect(DISTINCT d) AS samples
RETURN projectName, fullName, projectDescription, projectDate, importCount,
       size(samples) AS sampleCount,
       size([s IN samples WHERE NOT s:Ghost]) as nonGhostCount
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40588340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档