Skip to content

2388. Change Null Values in a Table to the Previous Value

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
WITH
  CoffeeShoptWithRowNumber AS (
    SELECT *, ROW_NUMBER() OVER() AS `row_number`
    FROM CoffeeShop
  ),
  CoffeeShoptWithRowNumberAndGroupId AS (
    SELECT
      *,
      SUM(drink IS NOT NULL) OVER(
        ORDER BY `row_number`
      ) AS group_id
    FROM CoffeeShoptWithRowNumber
  )
SELECT
  id,
  FIRST_VALUE(drink) OVER(
    PARTITION by group_id
    ORDER BY `row_number`
  ) AS drink
FROM CoffeeShoptWithRowNumberAndGroupId;