列出表

时间:2017-11-01 15:07:46

标签: list neo4j group-by cypher

我正在忙着制作一份虚构的短期汽车保险索赔数据集。数据的结构如下:

Name        Claim_ID     Claim_Amount    Date_Processed   etc...
Sam Smith   JT367214     3764.89         06/13/2011       etc...

我的问题是,有些人在一年内提交了多项索赔。我想查看谁使用他们的名称作为唯一ID提交了多个声明。必须首先按每个客户端的声明数量对数据进行排序,然后按Date_Processed进行排序。因此,我得到的表必须如下所示:

Name         Claim_ID     Claim_Amount    Date_Processed
Sam Smith    JT367214     3764.89         06/13/2011   
             LK592814     234.67          07/19/2011 
             MT329164     1000.00         08/02/2011
Matt Jones   LK678321     5674.00         02/03/2011

目前我使用的代码如下所示:

MATCH(a:Client) - [f:Submitted_Claim] - (b:Claim)
WITH a.Name_Surname as Client, b.Claim_ID as Claim_ID, b.day as Claim_Day, b.month as Claim_Month, count(f) as Number_of_claims
RETURN Client, Claim_ID, Claim_Day, Claim_Month
ORDER BY Number_of_claims DESC

这有效,但它只提供个人声明,而不是每个客户的所有声明组合在一起。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

此查询将首先返回具有最多声明的客户端,并且每个客户端将具有日期排序的声明数据集合:

MATCH(a:Client)-[f:Submitted_Claim]-(b:Claim)
WITH a.Name_Surname AS Client, b.Claim_ID AS cId, b.day AS cd, b.month AS cm
ORDER BY cm, cd
RETURN
  Client,
  COLLECT({Claim_ID: cId, Claim_Day: cd, Claim_Month: cm}) AS data
ORDER BY SIZE(data) DESC