У меня есть данные об окончании школы по годам и подгруппам, мне были предоставлены числитель и знаменатель, а также коэффициент выпуска за один год, но мне также необходимо рассчитать скользящее среднее за 3 года.Статистик, который больше не работает с нами, сообщил мне, что для этого мне нужно получить промежуточную сумму для числителя за 3 года и промежуточную сумму за 3 года для знаменателя.Я понимаю математику и проверил свою работу вручную и через Excel с несколькими подгруппами.Я также рассчитал это с использованием T-SQL без проблем, если нет нулевых записей, но я борюсь с вычислением, когда есть нули или 0.
Я попытался запустить запрос с учетом нуляиспользуя NULLIF
ID,
Bldg,
GradClass,
Sbgrp ,
TGrads,
TStus,
Rate,
/*Numerator Running total*/
SUM (TGrads) OVER ( partition BY ID, Sbgrp ORDER BY GradClass ROWS BETWEEN 2 preceding AND CURRENT row ) AS NumSum,
/*Denominator Running Total*/
SUM ( TStus) OVER ( partition BY ID, Sbgrp ORDER BY GradClass ROWS BETWEEN 2 preceding AND CURRENT row ) AS DenSum,
/*Moving Year Average*/
(
( SUM ( TGrads) OVER ( partition BY DistrictID, Sbgrp ORDER BY GradClass ROWS BETWEEN 2 preceding AND CURRENT row ) ) / NULLIF ( ( SUM ( TStus) OVER ( partition BY ID, Sbgrp ORDER BY GradClass ROWS BETWEEN 2 preceding AND CURRENT row ) ), 0 ) * 100
) AS 3yrAvg
FROM
KResults.DGSRGradBldg
Первый вопрос, мне предоставили запись для всех подгрупп, даже если у них не было учеников в подгруппе.Я хочу вести учет, чтобы все подгруппы учитывались в округе, и, поскольку я знаю, что у них нет данных, могу ли я заменить нулевые значения в Tgrads, TStus на 0?Если я заменю эти значения на 0, как я могу показать скорость как ноль?
Второй вопрос, как я могу вычислить скорость с нулевым или нулевым знаменателем?Я понимаю, что вы не можете разделить на 0, но я хочу сохранить запись, чтобы было легко и ясно увидеть, что у них нет данных.Как я могу это сделать?Когда я пытаюсь вычислить это без учета Null, я получаю ошибки, 1.) Делить на ноль возникшей ошибки.(8134) и 2.) Нулевое значение устраняется с помощью агрегата или другой операции SET.(8153).
Зная, что я не могу разделить на 0 или Null, я изменил свой запрос, чтобы включить NULLIF, и когда я это делаю, запрос выполняется без ошибок, но я не получаю точный процент для ставок, которые ниже 100%.Все мои ставки теперь равны либо 100%, либо 0 - обратите внимание на последнюю строку, скользящее среднее 2/3 не равно 0.
Вот как будут выглядеть данные, если я попытаюсь учесть нули в моем Переезде за три годасреднее значение равно 0. Обратите внимание, что в колонке «Скользящая средняя» за три года показаны все 0.
ID Bldg Class Sbggrp TGrads TStus Rate NumSum DenSum 3yrAvg
A 1 2014 A1 46 49 93.9 46 49 0
A 1 2015 A1 41 46 89.1 87 95 0
A 1 2016 A1 47 49 95.9 134 144 0
A 1 2017 A1 38 40 95.0 126 135 0
A 1 2018 A1 59 59 98.3 143 148 0
A 1 2014 A2 1 1 100 1 1 100
A 1 2015 A2 1 1 100
A 1 2016 A2 1 1 100
A 1 2017 A2 2 3 66.7 2 3 0
A 1 2018 A2 2 2 100 4 5 0
Любой совет был бы оценен, но, пожалуйста, предоставьте предложения любезно этому новичку.Спасибо за ваше время и помощь.