ArangoDB按组求和

时间:2018-06-21 06:29:16

标签: arangodb

我对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中的外观如何。

是否有可能在一个LOOP中创建几个组(FILTER + COLLECT AGGREGATE s = SUM(从FILTER返回的集合))? 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

以下内容应在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 }