1
0
Fork 0
arangodb/Doxygen/Examples.Ahuacatl/aqlexample-grouping

46 lines
1.8 KiB
Plaintext

/* group users by age */
FOR u IN users
FILTER u.active == true
COLLECT age = u.age INTO group
SORT age DESC
RETURN { "age" : age, "users" : group }
[ { "age" : 37, "users" : ["Sophia", "John"] },
{ "age" : 36, "users" : ["Emma", "Fred"] },
{ "age" : 34, "users" : ["Madison"] },
{ "age" : 33, "users" : ["Chloe", "Michael"] },
{ "age" : 32, "users" : ["Alexander"] },
{ "age" : 31, "users" : ["Abigail", "Daniel"] },
{ "age" : 30, "users" : ["Isabella", "Anthony"] },
{ "age" : 29, "users" : ["Mary", "Jim"] },
{ "age" : 28, "users" : ["Mariah", "Diego"] } ]
/* group users by agegroup and gender */
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5, gender = u.gender INTO group
SORT ageGroup DESC
RETURN { "ageGroup" : ageGroup, "gender" : gender, "numUsers" : LENGTH(group) }
[ { "ageGroup" : 35, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 35, "gender" : "m", "numUsers" : 2 },
{ "ageGroup" : 30, "gender" : "f", "numUsers" : 4 },
{ "ageGroup" : 30, "gender" : "m", "numUsers" : 4 },
{ "ageGroup" : 25, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 25, "gender" : "m", "numUsers" : 2 } ]
/* get the 3 agegroups with most users */
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5 INTO group
FILTER LENGTH(group) > 2 /* group must contain at least 3 users */
SORT LENGTH(group) DESC
LIMIT 0, 3
RETURN { "ageGroup" : ageGroup, "numUsers" : LENGTH(group), "users" : group[*].u.name }
[ { "ageGroup" : 30, "numUsers" : 8, "users" : ["Alexander", "Isabella", "Michael", "Abigail", "Anthony", "Daniel", "Madison", "Chloe"] },
{ "ageGroup" : 25, "numUsers" : 4, "users" : ["Mariah", "Mary", "Jim", "Diego"] },
{ "ageGroup" : 35, "numUsers" : 4, "users" : ["Emma", "Sophia", "Fred", "John"] } ]