ArangoDB 按组求和
ArangoDB sum by groups
我对 ArangoDB 查询没有什么问题。在 postgres 中,我做得很快而且没有问题:
SELECT SUM(x) from table GROUP BY
case
when age < 18 then 'Under 18'
when age between 18 and 24 then '18-24'
when age between 25 and 67 then '25-67'
when age between 68 and 100 then '68-100'
END
我想比较在 postgres 和 arango 中执行此操作的时间,但是...我不知道它在 arango 中应该是什么样子。
是否可以在一个循环中创建几个组 (FILTER + COLLECT AGGREGATE s = SUM(set return from FILTER))?
有什么想法吗?
以下应该适用于 AQL:
FOR doc IN collection
COLLECT group = (doc.age < 18 ? "Under 18" :
(doc.age >= 18 && doc.age <= 24 ? "18-24" :
(doc.age >= 25 && doc.age <= 67 ? "25-67" :
(doc.age >= 68 && doc.age <= 100 ? "68-100" : "other" ))))
AGGREGATE s = SUM(doc.x)
RETURN { group, s }
我对 ArangoDB 查询没有什么问题。在 postgres 中,我做得很快而且没有问题:
SELECT SUM(x) from table GROUP BY
case
when age < 18 then 'Under 18'
when age between 18 and 24 then '18-24'
when age between 25 and 67 then '25-67'
when age between 68 and 100 then '68-100'
END
我想比较在 postgres 和 arango 中执行此操作的时间,但是...我不知道它在 arango 中应该是什么样子。
是否可以在一个循环中创建几个组 (FILTER + COLLECT AGGREGATE s = SUM(set return from FILTER))? 有什么想法吗?
以下应该适用于 AQL:
FOR doc IN collection
COLLECT group = (doc.age < 18 ? "Under 18" :
(doc.age >= 18 && doc.age <= 24 ? "18-24" :
(doc.age >= 25 && doc.age <= 67 ? "25-67" :
(doc.age >= 68 && doc.age <= 100 ? "68-100" : "other" ))))
AGGREGATE s = SUM(doc.x)
RETURN { group, s }