我正在忙着制作一份虚构的短期汽车保险索赔数据集。数据的结构如下:
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
这有效,但它只提供个人声明,而不是每个客户的所有声明组合在一起。
任何建议都将不胜感激。
答案 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