2023-02-16 08:58:46 +00:00
|
|
|
---
|
|
|
|
slug: /en/sql-reference/aggregate-functions/reference/last_value
|
|
|
|
sidebar_position: 8
|
|
|
|
---
|
|
|
|
|
2023-05-24 20:14:01 +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
|
2023-02-21 02:41:58 +00:00
|
|
|
┌─last_value_ignore_nulls(b)─┐
|
|
|
|
│ 5 │
|
|
|
|
└────────────────────────────┘
|
2023-02-16 08:58:46 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
### example2
|
|
|
|
The NULL value is ignored.
|
|
|
|
```sql
|
2023-02-21 02:41:58 +00:00
|
|
|
select last_value(b) ignore nulls from test_data
|
2023-02-16 08:58:46 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
```text
|
2023-02-21 02:41:58 +00:00
|
|
|
┌─last_value_ignore_nulls(b)─┐
|
|
|
|
│ 5 │
|
|
|
|
└────────────────────────────┘
|
2023-02-16 08:58:46 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
### example3
|
|
|
|
The NULL value is accepted.
|
|
|
|
```sql
|
2023-02-21 02:41:58 +00:00
|
|
|
select last_value(b) respect nulls from test_data
|
2023-02-16 08:58:46 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
```text
|
2023-02-21 02:41:58 +00:00
|
|
|
┌─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
|
|
|
|