Som en starter:din aktuelle forespørgsel gør ikke, hvad du ønsker. Det ser ud til, at du faktisk har brug for et månedligt vinduessum på fix_costs
. Så jeg ville tage udgangspunkt i:
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;
Dette giver:
Derfra kan du tilføje logikken, der tager højde for den "daglige indtægtsandel pr. land". Som jeg forstår dit spørgsmål, er det:
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;
Returnerer:
Hvis det er nødvendigt, kan du fjerne registreringerne for landet 'None'
ved at omdanne forespørgslen til en underforespørgsel og filtrere en ydre forespørgsel ind.