SQL Развивающийся и комбинирующий коэффициент потерь - PullRequest
0 голосов
/ 23 марта 2020

С чего я начал:

ID  Earned Premium  Losses  Expenses    Coverage
A22 100             15      5           Collision
A22 100             20      0           PIP
A22 100             5       0           Bodily Injury
A22 130             15      5           Collision
A22 130             20      0           PIP
A22 130             5       0           Bodily Injury

Поскольку заработанная премия со временем увеличивается, чтобы получить самую свежую информацию, я использовал ее ниже Запрос:

select t.*
from (select t.*, row_number() over (partition by id, Coverage order by Earned Premium desc) as seq
      from table t 
     ) t 
where seq = 1;

Теперь, что у меня есть:

ID  Earned Premium  Losses  Expenses    Coverage
A22 130             15      5           Collision
A22 130             20      0           PIP
A22 130             5       0           Bodily Injury

Теперь мне нужно создать отдельный столбец, который рассчитывает коэффициент потерь для каждого покрытия и объединяет его для всего идентификатора. Проблема в том, что я не могу просто суммировать свою заработанную премию для расчета, потому что «130 »- это общая сумма, но она появляется несколько раз из-за покрытия.

Я хочу суммировать все свои убытки и расходы и рассчитать их в соответствии со 130 заработанной премией для коэффициента потерь идентификатора и выполнить расчет по строке для моего коэффициента потерь покрытия.

Я здесь довольно тупой и не знаю синтаксиса ...

Коэффициент потерь = Потери + Расходы / Заработанная премия

Что я хочу:

ID  Earned Premium  Losses  Expenses    Coverage    Coverage Loss Ratio ID Loss Ratio
A22 130             15      5           Collision    15%                35%
A22 130             20      0           PIP          15%                35%
A22 130             5       0           Bodily Injury 4%                35%

Длинна, я знаю ...

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете использовать CTE и подвыбрать, чтобы получить общее значение для определения коэффициента потери идентификатора. Для коэффициента потерь покрытия, вы можете просто подключить свою формулу. Вы можете изменить поля для форматирования по мере необходимости (умножьте на 100, измените на varchar, чтобы добавить%), но это покажет вычисления, которые вам понадобятся.

;WITH CTE AS (
select t.*
from (select t.*, row_number() over (partition by id, Coverage order by EarnedPremium desc) as seq
      from table t 
     ) t 
where seq = 1)
SELECT  *, 
        (Losses + Expenses)/EarnedPremium AS CoverageLossRatio, 
        (SELECT SUM(Losses + Expenses) FROM CTE a WHERE a.ID = b.ID) / EarnedPremium AS IDLossRatio
FROM CTE b;
...