您可以在计算 周围 和窗口 内 使用
case表达式:
sum
select sales_date, country, sum(sales_volume), case when country <> 'NL' then sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date)) / day(last_day(sales_date)) * sum(sales_volume) / sum(case when country <> 'NL' then sum(sales_volume) else 0 end) over(partition by sales_date) else 0 end as fix_cost_per_dayfrom salesgroup by 1,2;
DB
Fiddle上的演示
:
销售日期| 国家| 总和(sales_volume)| fix_cost_per_day:--------- | :------ | ----------------:| ---------------:2020-01-03 | DE | 500 | 37.950664142020-01-03 | FR | 350 | 26.565464902020-01-03 | NL | 320 | _空_2020年1月30日| 无| 0 | _空值_2020-02-15 | DE | 700 | 137.147335422020-02-15 | FR | 180 | 35.266457682020-02-15 | NL | 420 | _null_ 2020-02-29 | 无| 0 | _空值_2020-03-27 | DE | 180 | 20.196353442020-03-27 | FR | 970 | 108.835904632020-03-27 | NL | 670 | _null_ 2020-03-31 | 无| 0 | _空值_



