-- Promedio de mora por documento de clientes 2016 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, SUM(dv.valor) AS total_ventas, COUNT(dv.id_documento) AS numero_facturas, SUM(r.valor) AS total_recaudos, COUNT(r.id_documento) AS numero_recaudos, AVG(mora) AS promedio_mora, IFNULL(AVG( IF( PERIOD_DIFF(201612,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) WHERE (LEFT(dv.id_documento,2) = 'DV' OR LEFT(dv.id_documento,2) = 'EF' OR LEFT(dv.id_documento,1) = 'F') AND dv.fecha >= "2016-01-01" AND dv.fecha <= "2016-12-31" GROUP BY Nit