Realizando o cálculo do NPS com MySQL

Luigi Pontello
luigipontello
Published in
5 min readApr 7, 2021

Primeiramente, o que é o NPS?

Explicado de forma clara pela Track, Net Promoter Score é uma metodologia usada para medir o grau de satisfação de um cliente com uma marca através de uma pergunta simples: “Em uma escala de 0 a 10, o quanto você recomendaria a nossa empresa para um amigo ou familiar?”

Nesta pesquisa os clientes que respondem com uma nota de 0 a 6 são o que chamamos de Detratores, clientes que não estão tendo uma boa experiência com sua empresa, e que além disso realizam uma propaganda negativa do seu negócio, com enorme possibilidade de churn.

Notas de 7 e 8 são os chamados Neutros, clientes que apesar de não estarem tendo uma experiência ruim, também não são fiéis a empresa, ou seja, em qualquer oportunidade podem sair.

Os clientes que dão nota 9 ou 10 são aqueles chamados de Promotores, clientes fiéis e leais a marca, que fazem uma propaganda positiva da empresa de forma orgânica.

Como é feito o cálculo do NPS?

O cálculo do NPS é bem simples, basicamente é a porcentagem dos Promotores subtraída da Porcentagem dos Detratores, este resultado dará um número inteiro, este número é o seu NPS.

https://bit.ly/31PsCSP

O valor do NPS pode variar bastante de segmento para segmento, porém temos uma escala de classificação que pode ser usada como base.

A escala de classificação do NPS esta entre 4 níveis:
Excelente: NPS 75 a 100;
Muito Bom: NPS 50 a 74;
Razoável: NPS entre 0 e 49;
Ruim: NPS entre -100 e -1.

Realizando o cálculo com MySQL

Certo dia em meu trabalho, me foi solicitado o valor do NPS por períodos, porém as notas constavam no nosso banco de dados.

Sendo assim pensei: porque não realizar toda essa operação dentro do próprio banco? E comecei a realizar N fórmulas, mas nenhuma com efeito. Até que resolvi pesquisar mais um pouco e achei um artigo onde mostrava uma query que resolveu meus problemas, e com a autorização do autor Alex Jegtnes, estou escrevendo este passo a passo, baseado em seu trabalho.

A Query

A query realizada pelo Alex difere um pouco da feita por mim, principalmente por ter sido feita há alguns anos e voltada para o PostgreSQL, que era a seguinte:

Query realizada pelo Alex

Quando tentei realizar exatamente a mesma query ocorreram alguns erros, e no fim fui ajustando, até chegar a este modelo final

Query adaptada por mim

Claro, é totalmente possível implementar novas condições, e até mesmo realizar group by caso necessário.

Ok, esta é a query final, mas e aí, o que está acontecendo?

Sim, eu sei, da mesma forma que fiquei um pouco perdido com a primeira query, você também pode estar um pouco sem entender o que são cada um daqueles parênteses. Sendo assim, vamos a uma explicação detalhada.

Basicamente a ideia do round é arredondar o resultado, já que o NPS é um número inteiro e o resultado da equação será um número decimal.

CASE WHEN é algo que eu sempre apanho para realizar, mas é bem simples de entender. Basicamente este cálculo entre os parênteses, busca dentro da COLUNA, valores entre 9 e 10 (promotores), e caso encontre, adiciona 1 à contagem, caso não encontre, não adiciona nada. A multiplicação por 1.0 é para transformar o número inteiro em um valor float. A subtração é para subtrair pelo próximo valor entre parênteses.

Basicamente idêntico ao que fizemos anteriormente, a diferença é que desta vez iremos utilizar os números de 0 a 6(detratores) para realizarmos a subtração dos promotores feita acima. Como o cálculo anterior se transformará em um número float, não é necessário multiplicar por 1.0

/count(*) realizará a divisão do resultado da subtração anterior pelo total de linhas da tabela. Logo em seguida será multiplicado por 100.

‘as NPS’ é apenas para nomear a coluna como NPS, mas pode ser qualquer outro nome que você preferir.

A tabela na qual as notas se encontram. Importante ressaltar que as notas, exclusivamente, devem estar em uma mesma coluna.

Este caso é para evitar que caso seja opcional responder a pergunta, não sejam contabilizadas linhas em branco no cálculo. Além disso você pode usar o where que quiser a mais neste cálculo.

Um agradecimento

Conforme mencionado no inicio deste texto, ele foi realizado baseado no artigo feito pelo Alex Jegtnes, caso queira conhecer o artigo original, estará linkado.

Conclusão

Espero que este artigo consiga te ajudar, não apenas com calcular o NPS, mas outras fórmulas que podem vir aa sua cabeça, ou novas ideias que possam surgir inspiradas nesta.

Linkedin
Github

--

--