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 🚀