Till att börja med:din aktuella fråga gör inte vad du vill. Det verkar som att du faktiskt behöver en månatlig fönstersumma på fix_costs
. Så jag skulle utgå från:
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;
Detta ger:
Därifrån kan du lägga till logiken som tar hänsyn till "den dagliga inkomstandelen per land". Som jag förstår din fråga är 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;
Returnerar:
Om det behövs kan du ta bort posterna för landet 'None'
genom att vända frågan till en underfråga och filtrera in en yttre fråga.