What is the use of read_group aggregations

In Odoo, you can use read_group to let the database handle aggregation (just like SQL GROUP BY).


data = self.env['sale.order'].read_group(

[('state', '=', 'sale')], # domain filter

['partner_id', 'amount_total:sum'],# fields to aggregate

['partner_id'] # group by

)


👉 This executes an optimized query in PostgreSQL and gives you grouped results.


✅ Sample Output:

[

{'partner_id': (3, 'ABC Corp'), 'amount_total': 12000.0, '__count': 4},

{'partner_id': (5, 'XYZ Ltd'), 'amount_total': 8000.0, '__count': 2},

]



🔹 Benefits:

  • Much faster than Python loops
  • ORM-safe (no raw SQL needed)
  • Perfect for dashboards & reports

Small trick, huge performance gain 🚀