|
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
¿Mejoramos la definición?
Puntos: 0( 0 votos)
Publicado el 13/07/2018. |