import { kysely } from "https://deno.land/x/kysely_postgrs_js_dialect@v0.27.4/deps.ts";
const { AggregateFunctionBuilder } = kysely;
Adds a filter
clause with a nested where
clause after the function.
Similar to WhereInterface's where
method.
Also see filterWhereRef.
Examples
Count by gender:
const result = await db
.selectFrom('person')
.select((eb) => [
eb.fn
.count<number>('id')
.filterWhere('gender', '=', 'female')
.as('female_count'),
eb.fn
.count<number>('id')
.filterWhere('gender', '=', 'male')
.as('male_count'),
eb.fn
.count<number>('id')
.filterWhere('gender', '=', 'other')
.as('other_count'),
])
.executeTakeFirstOrThrow()
The generated SQL (PostgreSQL):
select
count("id") filter(where "gender" = $1) as "female_count",
count("id") filter(where "gender" = $2) as "male_count",
count("id") filter(where "gender" = $3) as "other_count"
from "person"
Type Parameters
RE extends ReferenceExpression<DB, TB>
VE extends OperandValueExpressionOrList<DB, TB, RE>
Returns
AggregateFunctionBuilder<DB, TB, O>
Type Parameters
E extends ExpressionOrFactory<DB, TB, SqlBool>
Parameters
expression: E
Returns
AggregateFunctionBuilder<DB, TB, O>