dehaze

Aggregations

You can easily perform aggregations on any table/collection using the @aggregate directive. The allowed aggregation functions are count, min, max, avg, sum. For more advanced use cases, you can use prepared queries. You can also group, filter, sort data in the aggregations.

Simple aggregation querylink

Example: Fetch total amount of expenditures for all users:

query {
  expenditures(group: ["user_id"]) @postgres {
    user_id
    amount @aggregate(op: "sum")
  }
}
const { status, data } = db.get("expenditures")
    .aggregateSum("amount")

You can specify the @aggregate directive against multiple fields in a query.

Multiple aggregations on a single fieldlink

To specify multiple aggregations on the same field, you need to use the field argument in the @aggregate directive.

query {
  expenditures(group: ["user_id"]) @postgres {
    user_id
    total_amount @aggregate(op: "sum" field: "amount")
    max_amount @aggregate(op: "max" field: "amount")
    min_amount @aggregate(op: "min" field: "amount")
    average_amount @aggregate(op: "avg" field: "amount")
  }
}
// Coming soon!

Have a technical question?

Improve the docs!