Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title: ANY_VALUE
---
import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="Introduced or updated: v1.2.815"/>

Aggregate function.

The `ANY_VALUE()` function returns an arbitrary non-NULL value from the input expression. It's used in `GROUP BY` queries when you need to select a column that isn't grouped or aggregated.

> **Alias:** `ANY()` returns the same result as `ANY_VALUE()` and remains available for compatibility.

## Syntax

```sql
ANY_VALUE(<expr>)
```

## Arguments

| Arguments | Description |
|-----------|----------------|
| `<expr>` | Any expression |

## Return Type

The type of `<expr>`. If all values are NULL, the return value is NULL.

:::note
- `ANY_VALUE()` is non-deterministic and may return different values across executions.
- For predictable results, use `MIN()` or `MAX()` instead.
:::

## Example

**Sample Data:**
```sql
CREATE TABLE sales (
region VARCHAR,
manager VARCHAR,
sales_amount DECIMAL(10, 2)
);

INSERT INTO sales VALUES
('North', 'Alice', 15000.00),
('North', 'Alice', 12000.00),
('South', 'Bob', 20000.00);
```

**Problem:** This query fails because `manager` isn't in GROUP BY:
```sql
SELECT region, manager, SUM(sales_amount) -- ❌ Error
FROM sales GROUP BY region;
```

**Old approach:** Add `manager` to GROUP BY, but this creates more groups than needed and hurts performance:
```sql
SELECT region, manager, SUM(sales_amount)
FROM sales GROUP BY region, manager; -- ❌ Poor performance due to extra grouping
```

**Better solution:** Use `ANY_VALUE()` to select the manager:
```sql
SELECT
region,
ANY_VALUE(manager) AS manager, -- ✅ Works
SUM(sales_amount) AS total_sales
FROM sales
GROUP BY region;
```

**Result:**
```text
| region | manager | total_sales |
|--------|---------|-------------|
| North | Alice | 27000.00 |
| South | Bob | 20000.00 |
```

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This page provides a comprehensive overview of aggregate functions in Databend,
| [AVG](aggregate-avg.md) | Calculates the average of values | `AVG(temperature)` → `72.5` |
| [MIN](aggregate-min.md) | Returns the minimum value | `MIN(price)` → `9.99` |
| [MAX](aggregate-max.md) | Returns the maximum value | `MAX(price)` → `99.99` |
| [ANY](aggregate-any.md) | Returns any value from the group | `ANY(status)` → `'active'` |
| [ANY_VALUE](aggregate-any-value.md) | Returns any value from the group | `ANY_VALUE(status)` → `'active'` |

## Conditional Aggregation

Expand Down
5 changes: 5 additions & 0 deletions site-redirects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,11 @@ const siteRedirects = [
{
from: '/guides/query/dictionary',
to: '/guides/query/advanced/'
},
// ANY function redirect to ANY_VALUE
{
from: '/sql/sql-functions/aggregate-functions/aggregate-any',
to: '/sql/sql-functions/aggregate-functions/aggregate-any-value'
}
];
export default siteRedirects;
Loading