2017-04-24 127 views
2

我的年齡字段在我的用戶節點我需要按年齡分組。Neo4J Group按年齡Cypher查詢

'0-9', 
'10-19', 
'20-29', 
'30-39', 
'40-49', 
'50-59', 
'60-69', 
'70-79', 
'80-89', 
'90-99', 
'100 +' 

我用下面的查詢該

MATCH (n:users) RETURN count(n.age<25) as group1,count(n.age>25 AND n.age<30) as group2 

但獲取用戶的錯誤計數。任何人有想法,請在這裏分享。

回答

4

的問題是count函數計算變量的出現次數,無論價值多少:

UNWIND [true, false, true, true] as test 
RETURN count(test = true) 

所以,你可以嘗試這樣的事:

UNWIND [15, 15, 26, 29, 17, 18, 7, 14, 25, 14] as age 
RETURN sum(CASE WHEN age<=25 and age>10 THEN 1 ELSE 0 END) as group1, 
     sum(CASE WHEN age<=30 and age>25 THEN 1 ELSE 0 END) as group2 

UPD

在我看來,一個更簡單的方法來計算分佈:

UNWIND [15, 15, 26, 29, 17, 18, 0, 14, 25, 14] as age 
WITH age, 
    REDUCE(acc='', 
       r in [ [0,10,'group1'], [10,20,'group2'], [20,30,'group3'] ] | 
       acc + CASE WHEN age>=r[0] AND age<r[1] THEN r[2] ELSE '' END 
    ) as group 
    WHERE size(group)>0 
RETURN group, count(age) 
+0

非常感謝。爲你節省很多時間。 – Sadikhasan

+0

@Sadikhasan沒問題:)看看更新。 –