Kysely

Group By

The groupBy clause groups rows that have the same values into summary rows. It's typically used with aggregate functions like count, sum, or avg.

Basic Grouping

db.selectFrom('orders')
  .select(['category', (eb) => eb.fn.count('id').as('total_orders')])
  .groupBy('category')
  .execute()

Multiple Columns

db.selectFrom('orders')
  .select([
    'category',
    'status',
    (eb) => eb.fn.sum('amount').as('total_amount'),
  ])
  .groupBy(['category', 'status'])
  .execute()

SQL Expressions

import { sql } from 'kysely'
 
db.selectFrom('sales')
  .select([
    (eb) => eb.fn.count('id').as('sales_count'),
    sql`date_trunc('month', created_at)`.as('month'),
  ])
  .groupBy(sql`date_trunc('month', created_at)`)
  .execute()

On this page