Я пытаюсь вычислить процентное содержание одного столбца по отношению ко второму итоговому столбцу.
Я написал:
create temporary table screenings_count_2018 as
select guid,
datepart(y, screening_screen_date) as year,
sum(case when screening_package = 4 then 1 end) as count_package_4,
sum(case when screening_package = 3 then 1 end) as count_package_3,
sum(case when screening_package = 2 then 1 end) as count_package_2,
sum(case when screening_package = 1 then 1 end) as count_package_1,
sum(case when screening_package in (1, 2, 3, 4) then 1 end) as count_total_packages
from prod.leasing_fact
where year = 2018
group by guid, year;
Эта таблица устанавливает столбцы начального и общего количества. Все столбцы выглядят правильно.
Затем я использую ratio_to_report для вычисления процента (ссылка на этот учебник):
create temporary table screenings_percentage as
select
guid,
year,
ratio_to_report(count_package_1) over (partition by count_total_packages) as percentage_package_1
from screenings_count_2018
group by guid, year,count_package_1,count_total_packages
order by percentage_package_1 desc;
Я тоже пробовал:
select
guid,
year,
sum(count_package_1/count_total_packages) as percentage_package_1
-- ratio_to_report(count_package_1) over (partition by count_total_packages) as percentage_package_1
from screenings_count_2018
group by guid, year,count_package_1,count_total_packages
order by percentage_package_1 desc;
К сожалению, процент_пакет_1 просто возвращает все нулевые значения (это не правильно - я ожидаю процентов). Ни один не работает.
Что я делаю не так?
Спасибо!