# FIRST\_VALUE

Returns an expression evaluated at the first row of the window frame.

If there are no rows in the frame, returns `NULL`. For an overview of window functions in SingleStore, see [Window Functions Guide](https://docs.singlestore.com/db/v9.1/developer-resources/functional-extensions/working-with-window-functions.md).

## Syntax

```
FIRST_VALUE ( expression ) OVER (
    [PARTITION BY (col | expr), ...]
    [ORDER BY (col | expr), ...]
    [frame_clause]
)

```

## Arguments

* expression: any expression. This may be a column name, the result of another function, or a math operation.

## Return Type

The result type of expression

## Examples

```sql
CREATE TABLE fv_example (a INT, b INT);

INSERT INTO fv_example VALUES (1, 2), (2, 2), (3, 3), (4, 3);

```

```sql
CREATE TABLE tick_table(TIMESTAMP DATETIME(6), symbol VARCHAR(5), comp_name VARCHAR (30), price NUMERIC(18,4));


INSERT INTO tick_table VALUES('2022-11-18 10:55:36.000000','STC','SomeTechCo', 100.00),
('2022-11-18 10:55:37.000000','STC','SomeTechCo', 102.00),
('2022-11-18 10:55:42.000000', 'STC', 'SomeTechCo', 105.00),
('2022-11-18 10:55:48.000000', 'STC', 'SomeTechCo', 101.00),
('2022-11-18 10:56:03.000000', 'STC', 'SomeTechCo', 99.00),
('2022-11-18 10:55:42.000000', 'AME', 'ACME', 198.00),
('2022-11-18 10:55:50.000000', 'AME', 'ACME', 208.00),
('2022-11-18 10:55:52.000000', 'AME', 'ACME', 210.00),
('2022-11-18 10:55:55.000000', 'AME', 'ACME', 211.00),
('2022-11-18 10:55:52.000000', 'OCO', 'OnCallCo', 21.00),
('2022-11-18 10:55:55.000000', 'OCO', 'OnCallCo', 22.00),
('2022-11-18 10:55:57.000000', 'OCO', 'OnCallCo', 21.00),
('2022-11-18 10:56:00.000000', 'OCO', 'OnCallCo', 23.00),
('2022-11-18 10:56:03.000000', 'OCO', 'OnCallCo', 24.00);
```

## Window Function

```sql
SELECT a, FIRST_VALUE(a) OVER(ORDER BY (a)) FROM fv_example;


```

```output

+------+-----------------------------------+
| a    | FIRST_VALUE(a) OVER(ORDER BY (a)) |
+------+-----------------------------------+
|    1 |                                 1 |
|    2 |                                 1 |
|    3 |                                 1 |
|    4 |                                 1 |
+------+-----------------------------------+

```

```sql
SELECT TIMESTAMP, symbol, price, FIRST_VALUE(price) OVER 
(PARTITION BY symbol) FROM tick_table GROUP BY TIMESTAMP;


```

```output

+----------------------------+--------+----------+------------------------------------------------+
| TIMESTAMP                  | symbol | price    | FIRST_VALUE(price) OVER (PARTITION BY symbol)  |
+----------------------------+--------+----------+------------------------------------------------+
| 2022-11-18 10:55:50.000000 | AME    | 208.0000 |                                       208.0000 |
| 2022-11-18 10:55:55.000000 | AME    | 211.0000 |                                       208.0000 |
| 2022-11-18 10:55:52.000000 | OCO    |  21.0000 |                                        21.0000 |
| 2022-11-18 10:55:57.000000 | OCO    |  21.0000 |                                        21.0000 |
| 2022-11-18 10:56:00.000000 | OCO    |  23.0000 |                                        21.0000 |
| 2022-11-18 10:56:03.000000 | OCO    |  24.0000 |                                        21.0000 |
| 2022-11-18 10:55:36.000000 | STC    | 100.0000 |                                       100.0000 |
| 2022-11-18 10:55:48.000000 | STC    | 101.0000 |                                       100.0000 |
| 2022-11-18 10:55:42.000000 | STC    | 105.0000 |                                       100.0000 |
| 2022-11-18 10:55:37.000000 | STC    | 102.0000 |                                       100.0000 |                    
+----------------------------+--------+----------+------------------------------------------------+

```

## Window Frame Clause

```sql
SELECT a, FIRST_VALUE(a) OVER(ORDER BY (a) 
ROWS between CURRENT ROW and UNBOUNDED FOLLOWING) FROM fv_example;


```

```output

+------+---------------------------------------------------+
| a    | FIRST_VALUE(a) OVER(ORDER BY (a)                  |
|      | ROWS between CURRENT ROW and UNBOUNDED FOLLOWING) |
+------+---------------------------------------------------+
|    1 |                                                 1 |
|    2 |                                                 2 |
|    3 |                                                 3 |
|    4 |                                                 4 |
+------+---------------------------------------------------+

```

***

Modified at: February 16, 2023

Source: [/db/v9.1/reference/sql-reference/window-functions/first-value/](https://docs.singlestore.com/db/v9.1/reference/sql-reference/window-functions/first-value/)

(An index of the documentation is available at /llms.txt)
