我正在使用Neo4j v 2.3.0。此 cypher 查询为LOS返回零。 DaysOfCare
是一个字符串。
MATCH x-[rr]-(a:Discharge)-[r]-(b:Dx)
WHERE b.ICD9='25000'
RETURN
x.ICD9,
x.DIAG_DESC,
type(r),
count(x.DIAG_DESC) as Ct,
sum(TOINT(x.DaysOfCare)) as LOS
ORDER BY Ct DESC LIMIT 250
这里有什么问题?
是否尚未按计划添加ToInt
?这是一个错误,还是我错误地使用Sum
和ToInt
的组合?
答案 0 :(得分:1)
TOINT
功能已成为Cypher的一部分。如果您尝试更改此行,该怎么办:
sum(TOINT(x.DaysOfCare)) as LOS
对此:
collect(x.DaysOfCare) as LOS
这可能会让你了解它为什么不起作用。
答案 1 :(得分:0)
原始问题中的查询并未汇总正确的数据。此查询产生预期结果:
MATCH x-[rr]-(a:Discharge)-[r]-(b:Dx) where b.ICD9='25000' RETURN x.ICD9,x.DIAG_DESC,type(r),count(x.DIAG_DESC) as Ct,sum(ToInt(a.DaysOfCare)) as LOS order by Ct desc LIMIT 250
a-node集是医院出院,其中包含元数据,包括护理日。该查询寻求目标诊断(25000 =糖尿病),然后在x节点中寻求其他放电诊断。相关的诊断不是随机的;某些条件是聚集的。前几行输出是:
显然,ToInt工作正常......这是用户搞砸了。