2017-04-24 25 views
2

私は年齢フィールドが私のユーザーにありますノード次のグループで年齢層別にグループ化する必要があります。Neo4Jグループ年齢による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 [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 [true, false, true, true] as test 
RETURN count(test = true) 

だから、あなたはこのような何かを試すことができます

私のように、分布を計算するより簡単な方法:

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問題はありません:)更新を見てください。 –

関連する問題