SUM()
La función SUM(), nos devuelve la suma del campo especificado, el campo especificado debe ser un campo numérico, aunque no marca error si es un campo de texto, simplemente el resultado será 0, pero como siempre la práctica hace al maestro, vamos a ver algunos ejemplos:
Ejercicio 1
Mostrar la cantidad
total de asistentes a los estadios en toda la liga “Clausura 2016”, utilizando la función SUM()
select sum(asistencia) as Asistencia_Total
from partidos
where idtorneo = 11;
Como pueden observar la suma total es de 4,249,927 personas las que asistieron a los estadios a lo largo de las 17 jornadas, vamos a darle un poco más de forma a esta misma consulta utilizando los INNER JOIN
select t.nombre, sum(p.asistencia) as Asistencia_Total
from partidos p
inner join torneos t
on t.idTorneo = p.idTorneo
where t.idtorneo = 11;
Aquí únicamente mejoramos la consulta para que apareciera el nombre del torneo, ahora consideremos, otro ejercicio:
Ejercicio 2
Mostrar la cantidad de
goles anotados por equipos del torneo “Clausura
Mx 2016”, utilizando la función SUM()
y la cláusula de agrupamiento GROUP BY
Consideremos la tabla PUNTOS para esta consulta, la estructura queda como sigue:
select e.nombre, sum(p.goles_favor) as Goles
from equipos e
inner join puntos p
on p.idequipo = e.idequipo
and p.idtorneo = 11
group by e.nombre
order by sum(p.goles_favor) desc.
El resultado de la consulta es la que aparece en la siguiente imagen:
Como ven, la función SUM(), nos sirve para sumar el campo numérico, ahora haremos un ejercicio, un poco más elaborado, espero le entiendan, si no, cualquier duda, estoy para servirles.
Ejercicio 3:
Obtener los juegos jugados, juegos ganados, juegos
empatados, juegos perdidos, puntos, goles a favor, goles en contra y diferencia
de goles de los equipos participantes en el torneo “Clausura MX 2016”, utilizando la función SUM(), la sunción COUNT(), las subconsultas,
JOINS y el agrupamiento con GROUP BY
y la cláusula ORDER BY
select @tipo:=@tipo+1, e.nombre, count(e.nombre) as JJ, (select count(puntos) from puntos where puntos=3 and e.idequipo = idequipo and puntos.idtorneo = 11) as JG,
(select count(puntos) from puntos where puntos=1 and e.idequipo = idequipo and puntos.idTorneo = 11) as JE,
(select count(puntos) from puntos where puntos=0 and e.idequipo = idequipo and puntos.idTorneo = 11) as JP,
sum(puntos.puntos) as Puntos, sum(goles_favor) as GF, sum(goles_contra) as GC, sum(goles_favor)-sum(goles_contra) as DIF from puntos
inner join equipos e on e.idequipo=puntos.idequipo
where puntos.idtorneo=11
group by e.nombre order by sum(puntos) desc, sum(goles_favor) desc, sum(goles_contra) asc;
Espero le entiendan a la consulta, se las dejo como un ejercicio, si tienen dudas no duden en preguntar, espero comenten, compartan, den +1, o clic a algún anuncio de la página, muchas gracias a todos.
Saludos y un abrazo
No hay comentarios.:
Publicar un comentario