SELECT description, sku, level2, level3, rev, qty, trend, sum(rev) over ( partition by level2 ) theorder from ( SELECT ROW_NUMBER () OVER ( PARTITION BY level2 ORDER BY SUM(revenue) DESC ) rownum, SUM(revenue) OVER (PARTITION BY level2) total, description, sku, level2, level3, ROUND(SUM(revenue), 2) as rev, SUM(quantity) as qty, trend FROM ( select *, cast(past as float) / 3 as past, round( cast(present as float) /(cast(past as float) / 3.0), 2 ) as trend from ( select *, sum(quantity) FILTER ( WHERE year = 2021 and month between 6 and 8 ) over (PARTITION BY description) as past, sum(quantity) FILTER ( WHERE year = 2021 and month = 9 ) over (PARTITION BY description) as present from data ) ) where year = 2021 and month = 9 GROUP BY description ORDER BY total DESC ) WHERE rownum <= 10 and rev > 0 order by theorder desc;