Вы можете использовать следующий запрос для получения необходимых данных:
select values, rank,
sum(case when rank<2 then values else 0 end) condition1
from table
group by values, rank
Необходимо добавить / удалить столбцы из выбора и сгруппировать по требованию
Чтобы получить накопленную сумму, вы можете используйте следующий запрос:
select shop, brand, sales, rank, total_sales_shop, pct ,
sum(pct) over (partition by shop order by rank) as pct_act
from data
И чтобы получить финальную таблицу, вы можете использовать комбинацию оператора case и группы по
например
select shop,
max(case when rank=1 then pct_act end) as rank_1,
max(case when rank=2 then pct_act end) as rank_2,
max(case when rank=3 then pct_act end) as rank_3,
max(case when rank=4 then pct_act end) as rank_4,
max(case when rank=5 then pct_act end) as rank_5
from cumulative_sum
group by shop