Я пытаюсь найти способ вычисления нового столбца SQL, который работает по формуле, содержащей значения 'NA'. Я думаю, что я не получаю желаемый результат ни из-за значений 'NA', ни из-за моей группировки. См. Таблицу и формулу ниже:
Моя таблица выглядит следующим образом:
website session score
google 1 1
google 2 NA
bbc 3 2
bbc 4 4
bbc 5 5
Формула, которую я использую для создания нового вычисляемого поля, выглядит следующим образом:
select
website,
(sum(score IN (4,5))/sum((score is not null)) - sum(score IN (1,2))/sum(score is not null))*100 as new_column
from
my_table
group by
website
По сути, формула пытается выполнить следующее:
Суммируйте те значения в столбце оценки, которые равны 4 или 5, а затем разделите их на сумму чисел в столбце оценки, которые действительно существуют. ,
Затем вычтите следующее:
Суммируйте те значения в столбце оценки, которые равны 1 или 2, а затем разделите их на сумму чисел в столбце оценки, которые существуют.
Наконец:
Умножьте весь вывод на 100
Формула должна быть применена к каждой группе.
Так что вы должны получить следующий желаемый результат:
Принимая только первую группу "Google"
У вас есть 4 ненулевые значения. у вас есть 2 значения, при этом значение IN (1,2) и 0 значений в (4,5).
, поэтому вы получите следующую формулу:
((0/4) - (2/4)) * 100
-2 / 4 * 100
= -50
однако при расчете этого значения в SQL я получаю значение -100. что не имеет смысла для меня. кто-нибудь может помочь?