SQL - Duda con consulta y AVG

   
Vista:

Duda con consulta y AVG

Publicado por OsCaRo (1 intervención) el 30/12/2008 07:55:54
Saludos...

Mi duda es la siguiente, necesito hacer una consulta que me diga el promedio de alumnos titulados en un periodo.

suponiendo que mi tabla tiene una estructura como la siguiente:

alumnos
-------------------
Nombre (varchar)
Apellido (varchar)
Fecha_inscripcion
Fecha_baja
Egresado varchar(1)
Titulado (booleano).
cal_Examen1
cal_Examen2
Calificacion_final.

Y lo unico que me dice si el alumno esta titulado, es el campo del mismo nombre,
asi como si egreso o no con el campo egresado.

Como podria ser la consulta, pues aun no entiendo exactamente como funciona la funcion AVG?

Cualquier ayuda, gracias de antemano.
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

RE:Duda con consulta y AVG

Publicado por Christian Calvo (22 intervenciones) el 31/12/2008 09:38:29
Oscar, (por favor lee toda la respuesta quizá al final viene la solución que necesitas).

Antes que nada me gustaría invitarte a suscribirte a los foros de www.rdba.com.mx, es la página de mi negocio y apoyamos a gente que quiere aprender el manejo de SQL Server, esta renovada y quizá no encuentres preguntas, pero postula tu pregunta y con gusto te la responderemos...

Para empezar es dificil entender el concepto de "promedio de alumnos titulados en un periodo", más bien creo que necesitas saber el número de alumnos titulados en un perioro o el porcentaje de alumnos titulados con respecto al total de alumnos que podrían titularse en ese periodo o el promedio de calificación de los alumnos que se titularon en ese periodo, para empezar necesitamos saber:

1. Que campo(s) te define el periodo que necesitas.
2. Que dato te define el número total de alumnos que pueden titularse en dicho periodo.
3. El dato (si es que se requiere) del promedio de calificacion que obtuvo el alumno.

Porque eso de "promedio de alumnos titulados en un periodo" no tiene sentido, ¿qué es?, ¿cómo se come el promedio de alumnos titulados en un periodo?. Si a mi me piden que saque ese dato, yo entendería que quieren el promedio de las calificaciones de los alumnos titulados en un periodo, o en su defecto el porcentaje de alumnos titulados en un periodo (respecto a un total de alumnos candidatos a titularse).

Por otro lado la funcion AVG lo que hace es muy simple y te lo ejemplifico para que se entienda.

Supongamos (aunque no tiene mucha lógica pero en este es mi ejemplo y en mis ejemplos todo tiene lógica jaja) que tengo la tabla EdadesAlumnos que tiene la siguiente estructura:

Campo: AlumnoId
Campo: Edad

AlumnoID Edad
525 18
637 19
544 17
252 20

Si haces un SELECT AVG(Edad) FROM EdadesAlumnos

Te daia un valor = 18.5, es decir la edad promedio de los alumnos.

En tu casi si haces un:

SELECT AVG(CONVERT(float(8),Titulado)) * 100.0 FROM Alumnos

Te devolveria el Porcentaje de alumnos que están titulados, supongamos que tienes una lista de 100 alumnos y solo 30 tienen el campo de tutilado = 1, entonces el valor del AVG sería 0.3 (porque es 30/100) y multiplicado por 100 seria = 30 (el multiplicado por 100 es para que de el porcentaje).

Si haces un SELECT AVG(Calificacion_final) FROM Alumnos WHERE Titulado = 1

Te devolveria el promedio general de los alumnos titulados.

En resumen la funcion aggregate AVG suma el valor de cada registro que tenga el resultado del query y lo divide entre el numero de registros de ese query.

Espero que te sirva la información.

Saludos.
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