miércoles, 11 de mayo de 2011

dividir segun numero de filas encontradas sqlserver

Si tienes un select en el que deseas calcular un promedio, necesitas dividir el valor total entre el número de repeticiones. Por ejemplo necesitamos saber el promedio de compras de un cliente en los ultimos 12 meses, entonces sumamos el valor de sus compras de sus ultimos 12 meses y los dividimos entre 12, muy fácil, pero que pasa si ejecutamos la consulta y el cliente apenas ha comprado durante los ultimos 4 meses... el promedio quedaría errado, así que debemos calcular cuantos meses ha comprado para dividir entre los meses verdaderos, usamos la función COUNT ( ) .
Solución:
--seleccionar las compras de un cliente de los ultimos 12 meses y promediarlos
select SUM(valorfactura)/COUNT(distinct DATEPART(mm,fechafactura)) as promedio from facturas where codigocliente='0010' and DATEDIFF(mm,fechafactura)<=12
Lo que hace la función COUNT(distinct DATEPART(mm,fechafactura)) es contar el número real de meses que han transcurrido entre los ultimos 12 meses o los que devuelva el conteo.
*****fin

No hay comentarios: