Skip to content
Advertisement

How to use LAST_VALUE in PostgreSQL?

I have a little table to try to understand how the LAST_VALUE function works in PostgreSQL. It looks like this:

What I want to do is to use LAST_VALUE to fill the NULL value with the precedent non-NULL value, so the result should be this:

The query I tried to accomplish that is:

From what I understand of the LAST_VALUE function, it takes all the rows before the current one as a window, sorts them following the ORDER By thing and then returns the last row of the window. With my ORDER BY, all the rows containing a NULL should be put on top of the window, so LAST_VALUE should return the last non NULL value. But it doesn’t.

I am clearly missing something. Please help.

Advertisement

Answer

So, thanks to Jeremy’s explanations and another post (PostgreSQL last_value ignore nulls) I finally figured it out:

This query returns the result I expected.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement