Есть таблица purchase с информацией о покупках. Поля pr_name, pr_count, pr_price, pr_date означают наименование товара, количество, цену за единицу и дата покупки товара. Другие поля не рассматриваются для упрощения. Необходимо найти топ 5 товаров за каждый день, купленных за последние 7 дней. Топ означает максимальную продажу, выраженную в прибыли: количество * цену.
Вариант запроса, решающего задачу:
select pr_date
,pr_name
,pr_sum
,prank
from (select trunc(pr_date) as pr_date
,pr_name
,sum(pr_count * pr_pice) as pr_sum
,row_number() over(partition by trunc(pr_date)
order by sum(pr_count * pr_pice) desc) as prank
from purchase
where trunc(pr_date) > trunc(sysdate - 7)
group by trunc(pr_date)
,pr_name)
where prank <= 5;