Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Consulta para sacar promedio de calificaciones ? (http://www.forosdelweb.com/f86/consulta-para-sacar-promedio-calificaciones-447153/)

lucas_1250 01/12/2006 09:16

Consulta para sacar promedio de calificaciones ?
 
Hola a todos,

estoy haciendo un sistema para colegios, y ahora tengo que sacar el promedio de 3 notas, y esta seria la nota anual, lo estoy haciendo asi pero no da:
Código PHP:

select avg(notafrom notas where idalumno=and idmateria=and (idtiponota=or idtiponota=or idtiponota=3

el problema es que se requiere las 3 notas para promediar la nota anual y no dos o una, si en mi tabla notas falta el idtiponota=3, la consulta de arriba funciona igual, pero quiero que no funcione si falta una nota, que solo promedie cuando exista las 3 notas.

Gracias por adelantado,
saludos.

Lord of freaks 01/12/2006 09:24

Prueba con esto

Sacaría las media de notas del alumno 1 si quires la de todos para la materia dos sería la segunda consulta.

Código:

select avg(nota) from notas where idalumno=1 and idmateria=2 group by idalumno

select avg(nota) from notas where and idmateria=2 group by idalumno


lucas_1250 01/12/2006 10:27

Hola Lord,

el caso es que tengo que tener las 3 notas(idtiponota=1,idtiponota=2, idtiponota=3) para poder sacar la nota anual, la consulta que me diste saca el promedio cuando hay una nota o dos. o existe otra forma de realizarlo?
Yo tengo una tabla notas:

idalumo | idmateria | idtiponota | nota|

en idtiponota coloco la el tipo de nota, por ejm. aqui se califica por trimestres, es decir para cada trimestre existe una nota, y hay 3 trimestres y la nota anual se calcula promediando las 3 notas. si idtiponota tiene el valor de 1 significa que esa nota es del I Trimestre, si 2 es del II Trimestre

la verdad es que la veo dificil en una sola consulta,
Gracias por la ayuda,
saludos.

Lord of freaks 01/12/2006 10:50

Hola Lucas_1250

Precisamente la segunda consulta saca la nota media del alumno global no en función del trimestre, ya que para eso tendría que filtrar, la consulta:

Código:

select avg(nota) from notas where and idmateria=2 group by idalumno
Agrupa los registros por alumno y saca la media de cada uno en avg(nota) (creo vamos) si quieres separarlos ya tendrás que filtrar el GROUP BY con un HAVING seguramente


------------ EDICION POSTERIOR --------------------------

Mira probe con esta consulta y creo que explicará mejor lo que te digo pruebala y modifica a tu gusto.

Código:

SELECT

MAX(nota) as su_maxima,
MIN(nota) as su_minima,
(SELECT MAX( nota ) FROM nota) AS maxima_total,
(SELECT MIN( nota ) FROM nota) AS minima_total,
avg( nota ) AS media

FROM notas

WHERE idmateria=2

GROUP BY idalumno


Gabo77 01/12/2006 11:00

Código:

SELECT
        IDALUMNO, AVG(NOTA)
FROM
        NOTAS
GROUP BY
        IDALUMNO
HAVING
        SUM(IDTIPONOTA) = 6

Saludos!

lucas_1250 01/12/2006 11:40

Gracias Lord of freaks por la ayuda, tambien a Gabo77 por el codigo muy bueno, realmente me mataron, excelente, y lo mas en poco tiempo.

que la pasen bien,
saludos.


La zona horaria es GMT -6. Ahora son las 11:28.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.