Na początek:twoje bieżące zapytanie nie robi tego, czego chcesz. Wygląda na to, że faktycznie potrzebujesz miesięcznej sumy okien na fix_costs
. Zacząłbym więc od:
select
sales_date,
country,
sum(sales_volume),
sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date))
/ day(last_day(sales_date))
as fix_cost_per_day
from sales
group by 1,2;
To daje:
Od tego momentu możesz dodać logikę, która uwzględnia „udział w dziennych przychodach na kraj”. Jak rozumiem Twoje pytanie, to znaczy:
select
sales_date,
country,
sum(sales_volume),
sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date))
/ day(last_day(sales_date))
* sum(sales_volume)
/ sum(sum(sales_volume)) over(partition by sales_date)
as fix_cost_per_day
from sales
group by 1,2;
Zwroty:
W razie potrzeby możesz usunąć rekordy dla kraju 'None'
zmieniając zapytanie w podzapytanie i filtrując w zapytaniu zewnętrznym.