Aggregation Operations in TypeORM (Sum, Avg, Min, Max, Count)

Updated: September 4, 2022 By: Pennywise Post a comment

This short and straightforward article shows you how to perform aggregation operations in TypeORM. We’ll use a query builder and aggregate functions to calculate the following:

  • Sum: The sum of the values
  • Avg: The average value
  • Min: The minimum value
  • Max: The biggest value
  • Count: Count the records

Let’s say we have a table called employee that stores information about names, salaries of staff in a fiction company. Here’s the entity Employee defined with TypeORM:

// Example
// Employee Entity
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

export class Employee {
  id: number;

  name: string;

  salary: number;

You can add some dummy data to the table like so:

Now we can use a query builder to find the total salary, average salary, highest salary, smallest salary, and count the number of employees as follows:

const employeeRepository = myDataSource.getRepository(Employee);
const result = await employeeRepository
      .select('SUM(employee.salary)', 'totalSalary')
      .addSelect('AVG(employee.salary)', 'averageSalary')
      .addSelect('MAX(employee.salary)', 'maxSalary')
      .addSelect('MIN(employee.salary)', 'minSalary')
      .addSelect('COUNT(*)', 'count')



  totalSalary: '45000',
  averageSalary: '7500.0000000000000000',
  maxSalary: 12000,
  minSalary: 3000,
  count: '6'

That’s it, my friend. Continue learning more new and interesting stuff about TypeORM by taking a look at the following articles:

You can also check out our Javascript category page, TypeScript category page, Node.js category page, and React category page for the latest tutorials and examples.

Notify of
Inline Feedbacks
View all comments

Related Articles