У меня есть два месяца с двумя значениями, например:Рассчитать процент Разница в SQL Server
July-2013 1838.08
Aug-2013 3500.08
Как я могу вычислить процентную разницу в августе по сравнению с июлем?
У меня есть два месяца с двумя значениями, например:Рассчитать процент Разница в SQL Server
July-2013 1838.08
Aug-2013 3500.08
Как я могу вычислить процентную разницу в августе по сравнению с июлем?
Формула для этого легко это (Curr-Prev)*100.0/Prev
, что не ясно, как применить его, так как мы не знаем, ваше определение таблицы, содержание или ключи , и, следовательно, не знают, как в целом выбрать один месяц, и это предыдущее значение. Но, жесткое кодирование было бы так:
SELECT
100.0*(curr.Val - prev.Val)/prev.Val As PercentDiff
FROM yourTable As curr
JOIN yourTable As prev
ON curr.MonthStr = 'Aug-2013' AND prev.MonthStr = 'July-2013'
безупречное спасибо! – rgx71
SELECT VAR(Bonus) 'Variance',
STDEVP(Bonus) 'Standard Deviation',
STDEV(Bonus) 'Standard Deviation',
VARP(Bonus) 'Variance for the Population'
FROM Sales.SalesPerson;
кредитованием fololwing пост
Примечание: разъяснение изменило вопрос. – RBarryYoung
@RBarryYoung .. вы правы, но что мы можем сделать .. i upvoted your comment – Dhaval
Проблемы с разработкой процентных изменений является то, что вам нужно быть осторожными, когда «старое значение» 0 или вы получите сообщение об ошибке.
В одном подходе используется nullif (old_Value, 0), но тогда проблема в том, что когда старые значения равны 0, вы запрашиваете New_Value/NULL, которое является новым значением. (Безусловно, не изменение в%)
Я работал вокруг него, как это:
(case
when
OldValue = 0 and NewValue = 0
then
cast(0 as Decimal(10,2))
when
OldValue = 0
then
'Na'
else
cast(cast(
(
(
(cast(NewValue as decimal(11,3)) -
cast(OldValue as decimal(11,3))
)*100
)/cast(OldValue as decimal(11,3))
) as decimal(20,3)
) as varchar
)
end) '% Change'
я, вероятно, бросил намного больше слепков, чем это необходимо, но она хорошо работает для меня. Дает Na при необходимости и 0 при необходимости.
Вы действительно хотите статистический * Разница * двух чисел? Или вы имеете в виду что-то еще? – RBarryYoung
Я хотел бы рассчитать процент, который увеличивался/уменьшался по сравнению с предыдущим месяцем – rgx71
А, это называется «* процентная разница *». «Разница» - это совсем другое дело. – RBarryYoung