SQL - Ayuda con una consulta

   
Vista:

Ayuda con una consulta

Publicado por Sergio samus_200@hotmail.com (2 intervenciones) el 29/04/2011 17:42:31
Buenas tengo la siguiente consulta:"insertar en la tabla los datos correspondientes
- carnet
- totalmaterias = cuantas materias tiene matriculadas
- materiasganadas = total de materias que superan 3.0
- materiasperdidas = total de materias inferiores a 3.0"

asi llevo la consulta: "
mysql> insert into acumulado(carnet,totalmaterias,mganadas,mperdidas) select alumno.carnet,al
umno.totalmaterias,count(alumate.defi),count(alumate.carnet) from alumno inner join alumate o
n alumate.carnet=alumno.carnet"

No se como hacer para contar las notas superiores a 3 y asignarlas al campo que corresponde alguien me ayuda?

Gracias
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 xve

Ayuda con una consulta

Publicado por xve (238 intervenciones) el 29/04/2011 20:56:59
Hola Sergio, seria algo así:

insert into acumulado
(carnet,totalmaterias,mganadas,mperdidas)
values
(select alumno.carnet, alumno.totalmaterias, count(alumate.defi),count(alumate.carnet)
from alumno inner join alumate on alumate.carnet=alumno.carnet)

Coméntame, ok?
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

Ayuda con una consulta

Publicado por Sergio (2 intervenciones) el 29/04/2011 21:33:36
Pero mira, alumate.defi es igual a una nota(3.5,2.6,5,1.....) lo que necesito es como asignar a los campos mganadas, cuantas son mayores de 3,y menores de 3 para mperdidas
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

Ayuda con una consulta

Publicado por Leonardo Josué (878 intervenciones) el 03/05/2011 16:53:22
Hola Sergio,

No me quedó muy clara la explicación de tu problema, ni la estructura de tus tablas. También serviría que nos pongas algunos datos de ejemplo, para poder hacer algunas pruebas. Por lo pronto, creo que lo que necesitas es hacer un sum condicional, sin embargo como te comenté por la falta de información no puedo darte un ejemplo que se aplique a tu caso. Te pongo un ejemplo que creo que más o menos sería lo que necesitas.

Supongamos que tienes una tabla con la siguiente estructura e información.

1
2
3
4
5
6
7
8
9
10
11
Alumno|Materia|Calificacion
-------------------------------------------
Hugo|Matemáticas|2.9
Hugo|Química|3.1
Hugo|Biología|3.1
Paco|Matemáticas|2.9
Paco|Química|2.7
Paco|Biología|2.9
Luis|Matemáticas|3.0
Luis|Química|3.1
Luis|Biología|3.2



si haces esto:

1
2
3
4
5
select alumno, count(*) total_materias,
sum(case when calificacion >= 3 then 1 else 0 end) as materias_ganadas,
sum(case when calificacion < 3 then 1 else 0 end) as materias_perdidas
from @tabla
group by alumno


entonces obtienes el siguiente resultado:

1
2
3
4
5
alumno|total_materias|materias_ganadas|materias_perdidas
----------------------------------------------------------------------------------------
Hugo|3|2|1
Paco|3|0|3
Luis|3|3|0


Trata de aplicar el ejemplo a tus datos, y si continuas con problemas danos alguna información adicional acerca de la estructura de tus tablas así como algunos datos de ejemplo.

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