ClickHouse/docs/en/sql-reference/aggregate-functions/reference/last_value.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
1.8 KiB
Markdown
Raw Normal View History

2023-02-16 08:58:46 +00:00
---
slug: /en/sql-reference/aggregate-functions/reference/last_value
2024-06-24 12:32:52 +00:00
sidebar_position: 160
2023-02-16 08:58:46 +00:00
---
# last_value
2023-02-16 08:58:46 +00:00
Selects the last encountered value, similar to `anyLast`, but could accept NULL.
2023-06-04 20:38:05 +00:00
Mostly it should be used with [Window Functions](../../window-functions/index.md).
2023-06-04 20:34:31 +00:00
Without Window Functions the result will be random if the source stream is not ordered.
2023-02-16 08:58:46 +00:00
## examples
2023-04-19 11:22:36 +00:00
```sql
2023-06-04 20:34:31 +00:00
CREATE TABLE test_data
(
a Int64,
b Nullable(Int64)
)
ENGINE = Memory;
INSERT INTO test_data (a, b) Values (1,null), (2,3), (4, 5), (6,null)
2023-02-16 08:58:46 +00:00
```
### example1
The NULL value is ignored at default.
```sql
select last_value(b) from test_data
```
```text
┌─last_value_ignore_nulls(b)─┐
│ 5 │
└────────────────────────────┘
2023-02-16 08:58:46 +00:00
```
### example2
The NULL value is ignored.
```sql
select last_value(b) ignore nulls from test_data
2023-02-16 08:58:46 +00:00
```
```text
┌─last_value_ignore_nulls(b)─┐
│ 5 │
└────────────────────────────┘
2023-02-16 08:58:46 +00:00
```
### example3
The NULL value is accepted.
```sql
select last_value(b) respect nulls from test_data
2023-02-16 08:58:46 +00:00
```
```text
┌─last_value_respect_nulls(b)─┐
│ ᴺᵁᴸᴸ │
└─────────────────────────────┘
2023-02-16 08:58:46 +00:00
```
2023-06-04 20:34:31 +00:00
### example4
Stabilized result using the sub-query with `ORDER BY`.
```sql
SELECT
last_value_respect_nulls(b),
last_value(b)
FROM
(
SELECT *
FROM test_data
ORDER BY a ASC
)
```
```text
┌─last_value_respect_nulls(b)─┬─last_value(b)─┐
│ ᴺᵁᴸᴸ │ 5 │
└─────────────────────────────┴───────────────┘
```
2023-02-16 08:58:46 +00:00