# smogon stats
turn chaos json files into [SQLite](https://sqlite.org) databases
you can find pre-generated dbs at , and you can [fiddle](https://sqlite.org/fiddle) with them in your browser or on your own computer.
## examples (2025-02)
```sh
smogon-stats gen9ou-1500.json -o gen9ou-1500.sqlite
sqlite3 gen9ou-1500.sqlite -markdown "SELECT name, format('%.2f%%', usage * 100) as usage FROM mon WHERE mon.usage > 0.04 ORDER BY mon.usage DESC LIMIT 10"
```
output:
| name | usage |
|--------------------|--------|
| Great Tusk | 33.05% |
| Kingambit | 23.75% |
| Gholdengo | 21.98% |
| Iron Valiant | 18.95% |
| Dragapult | 16.96% |
| Dragonite | 15.53% |
| Raging Bolt | 14.82% |
| Ogerpon-Wellspring | 14.77% |
| Iron Moth | 14.46% |
| Slowking-Galar | 14.26% |
you can also use SQLite's [`.expert`](https://sqlite.org/cli.html#index_recommendations_sqlite_expert_) to find indexes that can dramatically speed up queries, but the numbers are small enough that it likely won't matter except for exploratory stuff—even `100^3` is only `1_000_000`.
you can use SQLite's [`.excel`](https://sqlite.org/cli.html#_export_to_excel_) to open the result of the next query in a spreadsheet application, so here are some fun graphs with the commands that generated the data.
the smogon data is from `wget https://smogon.com/stats/2025-02/chaos/gen9ou-{0,1500,1695}.json`:
(apologies for the surely terrible SQL—the point of this is that you can do your own queries :P)
### usage by elo
```sql
attach 'gen9ou-0.sqlite' as ou0; attach 'gen9ou-1500.sqlite' as ou1500; attach 'gen9ou-1695.sqlite' as ou1695;
SELECT ou0.mon.name, ou0.mon.usage as usage0, ou1500.mon.usage as usage1500, ou1695.mon.usage as usage1695
FROM ou0.mon
JOIN ou1500.mon on ou0.mon.name = ou1500.mon.name
JOIN ou1695.mon on ou0.mon.name = ou1695.mon.name
WHERE ou0.mon.usage > 0.03
ORDER BY ou0.mon.usage DESC;
```

### top 50 moves (1695)
```sql
SELECT m.name, mon.usage * m.usage AS usage_adj
FROM move m
JOIN mon ON mon.name = m.mon
GROUP BY usage_adj
ORDER BY usage_adj
DESC limit 50;
```

### "win" and "fail" heuristics (1695)
see `examples/win-fail.sql` for source and explanation (i could see this heuristic being improved in the future!).
