# datafusion-extra-functions
[](https://github.com/datafusion-contrib/datafusion-extra-functions/actions/workflows/ci.yml?query=branch%3Amain)
[](https://crates.io/crates/datafusion-extra-functions)
Extra aggregate functions for [Apache DataFusion](https://datafusion.apache.org/). This is not an official Apache Software Foundation release.
Version `0.5.3` supports DataFusion `55.0` and Rust edition 2024.
## Installation
```sh
cargo add datafusion-extra-functions
```
Register all functions with your session context:
```rust
datafusion_extra_functions::register_all_extra_functions(&mut ctx)?;
```
## Available functions
| `mode(expression)` | Returns most frequent value. |
| `max_by(value, key)` | Returns value at maximum key. |
| `min_by(value, key)` | Returns value at minimum key. |
| `skewness(expression)` | Computes skewness. |
| `kurtosis_pop(expression)` | Computes population excess kurtosis. |
| `kurtosis(expression)` | Computes sample excess kurtosis. |
```sql
SELECT mode(city) FROM visits;
SELECT max_by(user_id, score) FROM results;
SELECT min_by(user_id, score) FROM results;
SELECT skewness(measurement) FROM readings;
SELECT kurtosis_pop(measurement) FROM readings;
SELECT kurtosis(measurement) FROM readings;
```
## Testing
```sh
cargo test
```