3

很抱歉这可能是一个重复的问题,但我仔细阅读了已经提出的问题,要么找不到与我的问题相关的问题,要么无法弄清楚它们与我的问题有何关系。我也是密码新手,所以这也可能是一个非常简单的问题。

我试图确定每个容器的名称、容器的总数以及每个容器中的项目数,以便我可以生成一个饼图来表示容器之间的项目分布。到目前为止,我构建的查询为我提供了项目的真实计数,但要么给我容器的计数 1(例如下面的查询),要么返回与项目计数具有相同值的容器计数。

START c=node:internal_auto_index( TYPE = 'CONTAINERS' ) 
WITH c, COUNT( c.name ) as containerCount
MATCH i-[INSTANCE__CONTAINERS]->c 
RETURN c.name as containerName, containerCount, COUNT(i) as items, ( COUNT(i) / containerCount ) as percentage
ORDER BY c.name

我做错了什么?在此先感谢您的时间。

干杯,

乔恩

4

1 回答 1

3

第一个查询的结果有两个表达式。第一个表达式c用作应用第二个表达式的聚合函数count()的组的键。由于每个c代表一组单个容器,因此聚合函数计数肯定会被评估为 1,而不是容器的总​​数。

解决这个问题的简单方法是在第一个查询中返回容器的计数并将其转发到第二个查询,

START c=node:internal_auto_index( TYPE = 'CONTAINERS' ) 
WITH  COUNT(*) as containerCount
START c=node:internal_auto_index( TYPE = 'CONTAINERS' ) 
MATCH i-[INSTANCE__CONTAINERS]->c 
RETURN c.name as containerName, containerCount, COUNT(i) as items, ( COUNT(i) / containerCount ) as percentage
ORDER BY c.name

我知道它看起来有点多余,但我认为没有办法将每个容器和单行中的容器总数作为查询结果返回。

于 2013-09-01T00:00:53.520 回答