Сначала вам нужно заполнить нулевые значения LAST_VALUE . Ваш запрос может выглядеть так:
SELECT athr_name,
post_date,
page_nm, visit_date,
sum(visit),
sum(visitors)
from (
select nvl(athr_name, LAST_VALUE(athr_name, TRUE)
OVER (ORDER BY page_nm, athr_name NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) as athr_name,
nvl(post_date, LAST_VALUE(post_date, TRUE)
OVER (ORDER BY page_nm, post_date NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) as post_date,
page_nm,
visit_date,
visit,
visitors
from your_table) as tmp_view
GROUP BY athr_name, post_date, page_nm, visit_date;
ОБНОВЛЕНИЕ:
Если возможно, что у вас нет соответствующего athr_name или post_date для некоторого page_nm, лучше использовать это запрос, чтобы сохранить эту информацию:
SELECT athr_name, post_date, page_nm, visit_date, sum(visit), sum(visitors)
from (
select name_view.athr_name as athr_name,
date_view.post_date as post_date,
main.page_nm,
main.visit_date,
main.visit,
main.visitors
from your_table main
LEFT JOIN (select athr_name, page_nm, row_number() over (PARTITION BY page_nm) as rn
from your_table
where athr_name is not null) name_view
ON main.page_nm = name_view.page_nm AND name_view.rn = 1
LEFT JOIN (select post_date, page_nm, row_number() over (PARTITION BY page_nm) as rn
from your_table
where post_date is not null) date_view
ON main.page_nm = date_view.page_nm AND date_view.rn = 1) as tmp_view
GROUP BY athr_name, post_date, page_nm, visit_date;