intranet-queries/MONTHLY-Clientes_para_ABC.sql

47 lines
1.3 KiB
SQL

-- Clientes para clasificacion ABC
SET NAMES 'utf8';
SELECT
cl.id_cliente AS Nit,
cl.nombre_cliente AS Cliente,
cs.cupo AS Cupo,
(IF(cs.cupo>0,"Credito","Contado")) As TipoCliente,
v.nombre_vendedor AS Asesor_asignado,
cs.id_sucursal AS Sucursal_asesor,
SUM(dv.valor) AS total_ventas,
COUNT(dv.id_documento) AS numero_facturas,
MAX(dv.fecha) AS fecha_ultima_factura,
SUM(r.valor) AS total_recaudos,
COUNT(r.id_documento) AS numero_recaudos,
AVG(mora) AS promedio_mora,
IFNULL(AVG(
IF(
PERIOD_DIFF(@PER,EXTRACT(YEAR_MONTH FROM r.fecha))>=3,
NULL,
IF(mora<0,0,mora)
)
),0) AS promedio_mora_ultimos_3meses,
MAX(mora) AS maxima_mora,
COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses
FROM
cliente cl
JOIN cliente_has_sucursal cs
USING (id_cliente)
LEFT JOIN documento_ventas dv
ON (dv.id_sucursal = cs.id_sucursal
AND dv.id_cliente = cs.id_cliente)
LEFT JOIN recaudo r
ON (r.id_cliente = cs.id_cliente
AND r.id_sucursal = cs.id_sucursal
AND r.id_documento = dv.id_documento)
LEFT JOIN vendedor v
ON (cs.id_vendedor = v.id_vendedor)
WHERE
dv.fecha >= @INI
AND dv.fecha < @FIN
GROUP BY
Nit