kysely
    Preparing search index...

    Class AggregateFunctionBuilder<DB, TB, O>

    An expression with an as method.

    Type Parameters

    • DB
    • TB extends keyof DB
    • O = unknown

    Implements

    Index

    Constructors

    Methods

    • Returns an aliased version of the function.

      In addition to slapping as "the_alias" to the end of the SQL, this method also provides strict typing:

      const result = await db
      .selectFrom('person')
      .select(
      (eb) => eb.fn.count<number>('id').as('person_count')
      )
      .executeTakeFirstOrThrow()

      // `person_count: number` field exists in the result type.
      console.log(result.person_count)

      The generated SQL (PostgreSQL):

      select count("id") as "person_count"
      from "person"

      Type Parameters

      • A extends string

      Parameters

      • alias: A

      Returns AliasedAggregateFunctionBuilder<DB, TB, O, A>

    • Adds an over clause (window functions) after the function.

      const result = await db
      .selectFrom('person')
      .select(
      (eb) => eb.fn.avg<number>('age').over().as('average_age')
      )
      .execute()

      The generated SQL (PostgreSQL):

      select avg("age") over() as "average_age"
      from "person"

      Also supports passing a callback that returns an over builder, allowing to add partition by and sort by clauses inside over.

      const result = await db
      .selectFrom('person')
      .select(
      (eb) => eb.fn.avg<number>('age').over(
      ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')
      ).as('average_age')
      )
      .execute()

      The generated SQL (PostgreSQL):

      select avg("age") over(partition by "last_name" order by "first_name" asc) as "average_age"
      from "person"

      Parameters

      Returns AggregateFunctionBuilder<DB, TB, O>