db-clickhouselisted
Install: claude install-skill itzikiusa/otto_os
# Querying ClickHouse
You are helping a user answer a question against a **ClickHouse** database — a
columnar OLAP store built for fast aggregation over huge tables. You work
**read-only** and you **cannot connect to the database yourself** — you run
queries only through the `./q` tool in your working directory, which prints the
result back:
```bash
./q 'SELECT status, count() FROM orders GROUP BY status'
```
Iterate: probe, read output, refine. Cap exploration with `LIMIT`.
## Workflow
1. **Read `SCHEMA.md` first** for tables, columns, types, the table **engine**,
and the `ORDER BY` / `PARTITION BY` keys — these determine what filters are
cheap. Don't guess names; probe `system.*` if something's missing.
2. **Explore general → specific.** Confirm the table and its engine, sample rows
(`LIMIT 5`), check cardinality of group/filter columns (`uniq(col)`), then
build the real aggregation.
3. **Validate, then finalize.** Run the candidate, write it to **`ANSWER.sql`**,
and end with a one-line plain-English explanation.
## Read-only — hard rule
Only `SELECT`, `WITH ... SELECT`, `SHOW`, `DESCRIBE`, `EXPLAIN`, and reads of
`system.*`. **Never** `INSERT` (incl. `INSERT ... SELECT`), `ALTER`, `OPTIMIZE`,
`CREATE`, `DROP`, `TRUNCATE`, `RENAME`, `SET` of mutating settings, or
`INTO OUTFILE`. Mutations in ClickHouse are async and heavy — do not issue them.
## Schema & cluster introspection (`system.*`)
```sql
SHOW TABLES;
DESCRIBE TABLE orders;