jueves, 26 de mayo de 2016

SUM() en MySQL (MariaDB)

Buenos días queridos lectores, el día de hoy seguiremos con las funciones agregadas y el agrupamiento, hoy toca ver la función SUM().


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;

Al ejecutar la consulta, nos arrojara la siguiente tabla:




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



Banderas de Visitantes

Flag Counter