Vamos a ver como podemos definir los pasos para poder escribir un programa informático del Análisis de RFM (Recencia, Frecuencia, Monto):
1)Tenemos que tener una base de datos de clientes con 3 campos (frecuencia de compra, recencia de compra, y monto de compra) preprocesados.
Y debemos tener en la una base aparte o en la misma base de clientes 3 campos más:
score_frecuencia
score_recencia
score_monto
Estos campos estarán definidos de 1 a 5
2) El programa principal estará definido como sigue:
BEGIN PROGRAM
// Contamos la cantidad de clientes que existe en la base
SELECT COUNT(*) INTO cantidadClientes
FROM clientes
// Calculamos los umbrales para poder establecer los límites de los
// quintiles
VAR umbral1 = cantidadClientes * 0.20
VAR umbral2 = cantidadClientes * 0.40
VAR umbral3 = cantidadClientes * 0.60
VAR umbral4 = cantidadClientes * 0.80
// poner en cero los atributos score_frecuencia, score_recencia,
// score_monto de cada cliente
// dividir el problema en 3 subproblemas
LLAMAR f_proceso_recency(umbral1, umbral2, umbral3, umbral4)
LLAMAR f_proceso_frequency(umbral1, umbral2, umbral3, umbral4)
LLAMAR f_proceso_monetary(umbral1, umbral2, umbral3, umbral4)
END PROGRAM
// Procedimiento que resuelve el puntaje de 1 a 5 del score de recencia
BEGIN PROCEDURE f_proceso_recency(umbral1, umbral2, umbral3, umbral4)
// Ordeno la base de datos en sentido ascendente a través del campo
// recencia de compra
Recorre cada cliente y asigna un 1 al numeroIterador:
// Con los valores de umbrales realizo las asignaciones
//QUINTIL 1
De numeroIterador <= umbral1
Asigno -> score_recencia = 5
//QUINTIL 2
De numeroIterador > umbral1 AND numeroIterador <= umbral2
Asigno -> score_recencia = 4
//QUINTIL 3
De numeroIterador > umbral2 AND numeroIterador <= umbral3
Asigno -> score_recencia = 3
//QUINTIL 4
De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
Asigno -> score_recencia = 2
//QUINTIL 5
De numeroIterador > pumbral4
Asigno -> score_recencia = 1
END PROCEDURE
// Procedimiento que resuelve el puntaje de 1 a 5 del score de frecuencia
BEGIN PROCEDURE f_proceso_frequency(umbral1, umbral2, umbral3, umbral4)
// Ordeno la base de datos en sentido descendente a través del campo
// frecuencia de compra
Recorre cada cliente y asigna un 1 al numeroIterador:
// Con los valores de umbrales realizo las asignaciones
//QUINTIL 1
De numeroIterador <= umbral1
Asigno -> score_frecuencia = 5
//QUINTIL 2
De numeroIterador > umbral1 AND numeroIterador <= umbral2
Asigno -> score_frecuencia = 4
//QUINTIL 3
De numeroIterador > umbral2 AND numeroIterador <= umbral3
Asigno -> score_frecuencia = 3
//QUINTIL 4
De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
Asigno -> score_frecuencia = 2
//QUINTIL 5
De numeroIterador > pumbral4
Asigno -> score_frecuencia = 1
END PROCEDURE
// Procedimiento que resuelve el puntaje de 1 a 5 del score del monto
BEGIN PROCEDURE f_proceso_monetary(umbral1, umbral2, umbral3, umbral4)
// Ordeno la base de datos en sentido descendente a través del campo
// monto de compra
Recorre cada cliente y asigna un 1 al numeroIterador:
// Con los valores de umbrales realizo las asignaciones
//QUINTIL 1
De numeroIterador <= umbral1
Asigno -> score_monto = 5
//QUINTIL 2
De numeroIterador > umbral1 AND numeroIterador <= umbral2
Asigno -> score_monto = 4
//QUINTIL 3
De numeroIterador > umbral2 AND numeroIterador <= umbral3
Asigno -> score_monto = 3
//QUINTIL 4
De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
Asigno -> score_monto = 2
//QUINTIL 5
De numeroIterador > pumbral4
Asigno -> score_monto = 1
END PROCEDURE