---
title: Query first and last values
description: Use the first() or last() functions to return the first or last point in an input table.
url: https://docs.influxdata.com/influxdb/v1/flux/guides/first-last/
estimated_tokens: 929
product: InfluxDB OSS v1
version: v1
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb/v1/flux/guides/first-last/
date: '2025-01-13T07:21:11-07:00'
lastmod: '2025-01-13T07:21:11-07:00'
---

This page documents an earlier version of InfluxDB OSS.[InfluxDB 3 Core](/influxdb3/core/) is the latest stable version.

Use the [`first()`](/flux/v0/stdlib/universe/first/) or[`last()`](/flux/v0/stdlib/universe/last/) functions
to return the first or last record in an input table.

```js
data
  |> first()

// OR

data
  |> last()
```

> [!Note]
> By default, InfluxDB returns results sorted by time, however you can use the[`sort()` function](/flux/v0/stdlib/universe/sort/)to change how results are sorted.`first()` and `last()` respect the sort order of input data and return records
> based on the order they are received in.

### first

`first()` returns the first non-null record in an input table.

**Given the following input:**

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:01:00Z|  1.0  |
|2020-01-01T00:02:00Z|  1.0  |
|2020-01-01T00:03:00Z|  2.0  |
|2020-01-01T00:04:00Z|  3.0  |

**The following function returns:**

```js
|> first()
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:01:00Z|  1.0  |

### last

`last()` returns the last non-null record in an input table.

**Given the following input:**

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:01:00Z|  1.0  |
|2020-01-01T00:02:00Z|  1.0  |
|2020-01-01T00:03:00Z|  2.0  |
|2020-01-01T00:04:00Z|  3.0  |

**The following function returns:**

```js
|> last()
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:04:00Z|  3.0  |

## Use first() or last() with aggregateWindow()

Use `first()` and `last()` with [`aggregateWindow()`](/flux/v0/stdlib/universe/aggregatewindow/)to select the first or last records in time-based groups.`aggregateWindow()` segments data into windows of time, aggregates data in each window into a single
point using aggregate or selector functions, and then removes the time-based segmentation.

**Given the following input:**

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:00:00Z|  10   |
|2020-01-01T00:00:15Z|  12   |
|2020-01-01T00:00:45Z|   9   |
|2020-01-01T00:01:05Z|   9   |
|2020-01-01T00:01:10Z|  15   |
|2020-01-01T00:02:30Z|  11   |

**The following function returns:**

#### first ####

```js
|> aggregateWindow(
  every: 1h,
  fn: first
)
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:00:59Z|  10   |
|2020-01-01T00:01:59Z|   9   |
|2020-01-01T00:02:59Z|  11   |

```js
|> aggregateWindow(
  every: 1h,
  fn: last
)
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:00:59Z|   9   |
|2020-01-01T00:01:59Z|  15   |
|2020-01-01T00:02:59Z|  11   |
| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:01:00Z | 1.0 |
| 2020-01-01T00:02:00Z | 1.0 |
| 2020-01-01T00:03:00Z | 2.0 |
| 2020-01-01T00:04:00Z | 3.0 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:01:00Z | 1.0 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:01:00Z | 1.0 |
| 2020-01-01T00:02:00Z | 1.0 |
| 2020-01-01T00:03:00Z | 2.0 |
| 2020-01-01T00:04:00Z | 3.0 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:04:00Z | 3.0 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:00:00Z | 10 |
| 2020-01-01T00:00:15Z | 12 |
| 2020-01-01T00:00:45Z | 9 |
| 2020-01-01T00:01:05Z | 9 |
| 2020-01-01T00:01:10Z | 15 |
| 2020-01-01T00:02:30Z | 11 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:00:59Z | 10 |
| 2020-01-01T00:01:59Z | 9 |
| 2020-01-01T00:02:59Z | 11 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:00:59Z | 9 |
| 2020-01-01T00:01:59Z | 15 |
| 2020-01-01T00:02:59Z | 11 |
