1

社内の全ユーザー数と男女の人数を知りたいです。私のクエリは次のとおりです。

 start n=node:company(name:"comp")
 match n<-[:Members_In]-x, n<-[:Members_In]-y  
 where x.Sex='Male' and y.Sex='Female' 
 return n.name as companyName, count(distinct x) as NumOfMale,
 count(distinct y) as NumOfFemale" );

私のクエリは正しいですがn<-[:Members_In]-y、match 句で使用すべきではないことはわかっています。

男性の数、女性の数、およびユーザーの総数を取得するにはどうすればよいですか?

4

3 に答える 3

3

Peter はここで外積を作成します。

これはあなたのユースケースにより適していると思います

start n=node:node_auto_index(name='comp')
match n<-[:Members_In]-x
with  n.name as companyName, collect(x) as employees
return length(filter(x in employees : x.Sex='Male')) as NumOfMale,
length(filter(x in employees : x.Sex='Female')) as NumOfFemale,
length(employees) as Total

http://console.neo4j.org/r/msamaaを参照

于 2012-12-06T11:22:14.893 に答える
2

試す

start n=node:node_auto_index(name='comp')
match n<-[:Members_In]-x, n<-[:Members_In]-y  
where x.Sex='Male' and y.Sex='Female' 
with 
n.name as companyName, 
count(distinct x) as NumOfMale,
count(distinct y) as NumOfFemale
return NumOfMale, NumOfFemale, NumOfMale + NumOfFemale as Total

例については、 http://tinyurl.com/cjpxraxを参照してください。

于 2012-12-06T09:52:42.080 に答える
0

実際には、その結果を達成するためのさらに簡単な方法があります

START n=node:node_auto_index(name='comp') 
MATCH n<-[:Members_In]-x 
RETURN count(x.name), x.Sex

http://architects.dzone.com/articles/neo4jcypher-sql-style-groupを見てください 。私の答えはちょっと遅いと思います...

于 2013-08-20T11:18:23.470 に答える