Interactive example
See the SQL before connecting.
Change the filters and inspect the TypeScript, SQL, and parameters. These queries compile in your browser; no database connection is needed.
TypeScript
const db = createClickHouseDB<DB>();
let query = db
.selectFrom("events as e")
.prewhere("e.tenant_id", "=", 1)
.where("e.created_at", ">=", "2026-08-01");
const result = query
.selectExpr(eb => ["e.event_type", eb.fn.count().as("events")])
.groupBy("e.event_type")
.orderBy("events", "desc")
.limit(20);
result.toSQL();Generated SQL
SELECT e.event_type, count() AS events
FROM events AS e
PREWHERE e.tenant_id = {p0:Int64}
WHERE e.created_at >= {p1:String}
GROUP BY e.event_type
ORDER BY events DESC
LIMIT 20Bound parameters
{
"p0": 1,
"p1": "2026-08-01"
}Result shape
{
event_type: string;
events: string; // UInt64
}[]Values remain separate from SQL. Connect your client to execute the query, or generate types from your schema.