SQL Server - Problemas con calculo de promedio!

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas con calculo de promedio!

Publicado por EnzO (2 intervenciones) el 26/04/2019 02:52:54
Buenas Noches!
Les comento mi inconveniente tengo una tabla Libros con campos Cantidad y Autor, necesito hacer una consulta que me devuleva el promedio de libros por autor!

para hacer eso debo obtener la cantidad de libro por autor multiplicarlo por 100 y dividirlo por la cantidad total de libros

SI hago esto
select L. Autor, AVG(L.Cantidad) as 'Total'
from TLibros L
group by L.Autor

es lo mismo que hacer esto, solo que por alguna razon me repite los resultados
select L. Autor, L.Cantidad
from TLibros L

Alquien seria tan amable de guiarme un poco!!

desde ya muchas gracias!!

P/d: he provado infinidades de forma pero no puedo obtener la sumatoria total para poder hacer la division!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vega
Val: 102
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas con calculo de promedio!

Publicado por Vega (43 intervenciones) el 26/04/2019 10:54:54
La función AVG the hace el cálculo del promedio, no necesitas hacer ninguna division.

creo que lo que pasa es que como un tienes "N libros / 1 autor" en todos los caso a menos que haya más de un autor asociado con un libro, en cuyo caso la media se calcuría dividiendo la cantidad de los libros por el number de autores registrados.


select L. Autor, count(L.Cantidad) as 'Total'
from TLibros L
group by L.Autor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas con calculo de promedio!

Publicado por EnzO (2 intervenciones) el 29/04/2019 14:27:56
Antes que anda muchas gracias Vega, he probado tu codigo, pero eso solo me devuelve la cantidad y no el promedio!
y ahora entendi como funciona el AVG, que te hace un promedio de n libros por autor, y lo que yo necesito es el promedio de libros por cada autor del total de la biblioteca!

Ejemplo como para explicarme mejor!
Autor ---- Libro ---- Cantidad
A ---- Alicia --- 10
B ----- Pinocho ---- 40
C ----- Supercampeones --- 60

al hacer la consulta por promedio la idea es que devuelta esto!
Autor ---- Libro ---- Cantidad -------- Promedio
A ---- Alicia --- 10 -------- % 9
B ----- Pinocho ---- 40 -------- %36
C ----- Supercampeones --- 60 ----- %55

Aclaracion mi 100% seria 110 que es la sumatoria de Cantidad!

desde ya muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vega
Val: 102
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas con calculo de promedio!

Publicado por Vega (43 intervenciones) el 29/04/2019 18:19:27
gracias por el ejemplo.

Aquí te dejo el ejemplo que me has dado resueltoÑ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
declare @a table (
Autor char(1)
,Libro	 char(25)
, Cantidad int)
 
insert into @a
select'A','Alicia			',10 union
select'B','Pinocho		',40 union
select'C','Supercampeones	',60
 
SELECT		*
,			CANTIDAD * 100 / SUM(Cantidad) OVER()
FROM		@A
GROUP BY	AUTOR
,			LIBRO
,			Cantidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problemas con calculo de promedio!

Publicado por Juan Carlos Martinez (1 intervención) el 21/12/2022 22:36:42
Hola buenas tardes, a mi me paso algo similar con un documento que tenia varios pagos, la manera como lo resolvi fue:

selec
cliente,
documento,
sum(monto) as monto,
avg(tipodecambio) as tc,
monto * tc as total

from tabla_documentos

where 1=1
group by cliente, documento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar