sqlserver dividir segun numero de filas encontradas


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.

*****fin

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s