mysql ejemplos select

/*obtener el jugador mas joven*/

select j.* from jugadores j order by j.fecha_nacimiento desc limit 1;

/*obtener el jugador mas viejo*/

select j.* from jugadores j order by j.fecha_nacimiento asc limit 1;

/* goles que metieron cada uno de los equipos como local*/

select e.id_equipos,e.nombre, sum(p.goles_local) as goles_local from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos group by e.nombre;

/* goles que metieron cada uno de los equipos como visitante*/

select e.id_equipos,e.nombre, sum(p.goles_visitante)
as goles_visitante from equipos e left join partidos p on p.fk_equipo_visitante=e.id_equipos group by e.nombre

/*equipo que metio mas goles como local*/

select e.id_equipos,e.nombre, sum(p.goles_local) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos
group by e.nombre
order by goles_local desc limit 1;


/*equipo que metio menos goles como local*/

select e.id_equipos,e.nombre, sum(p.goles_local) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos
group by e.nombre
order by goles_local asc limit 1;

/**promedio de goles como local de cada equipo */

select e.nombre, avg(p.goles_local) as promedio
from equipos e left join partidos p on p.fk_equipo_local = e.id_equipos
group by e.nombre
order by promedio desc;

/* goles que metieron cada uno de los equipos como local y visitante*/

select aaa.name,aaa.goles_local,bbb.goles_visitante
from
(select e.nombre as name, sum(p.goles_local) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos group by e.nombre) as aaa,

(select e.nombre as name, sum(p.goles_visitante) as goles_visitante
 from equipos e left join partidos p on p.fk_equipo_visitante=e.id_equipos group by e.nombre) as bbb
 where aaa.name=bbb.name group by aaa.name;

/* goles locales, visitantes y totales (locales + visitantes) de cada equipo*/

select aaa.name,aaa.goles_local,bbb.goles_visitante, sum(aaa.goles_local + bbb.goles_visitante) as total
from
(select e.nombre as name, IFNULL(sum(p.goles_local),0) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos group by e.nombre order by e.nombre) as aaa,

(select e.nombre as name, IFNULL(sum(p.goles_visitante),0) as goles_visitante
 from equipos e left join partidos p on p.fk_equipo_visitante=e.id_equipos group by e.nombre order by e.nombre) as bbb
where aaa.name = bbb.name
group by aaa.name;

nota: se introdujo la funcion IFNULL ya que si la suma de goles_local o goles_visitante da null
(es decir si el equipo no tiene goles como local o como visitante) la suma total no se realiza


/* listar los equipos que hayan metido como local 2 o mas goles en promedio*/

select e.nombre as name, IFNULL(avg(p.goles_local),0) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos group by e.nombre HAVING goles_local >=2

/* listar el equipo con mayor promedio de goles como local*/
select aaa.nombre, max(bbb.goles_local)
from
(select nombre from equipos) as aaa,
(
select e.nombre as name, avg(p.goles_local) as goles_local
from equipos e left join partidos p on p.fk_equipo_local=e.id_equipos
group by name) as bbb
where aaa.nombre=bbb.name;



/*equipos que hayan jugado de local el 2016*/

select distinct e.nombre
from equipos e, partidos p
where p.fk_equipo_local=e.id_equipos
and p.fecha_partido < '2017-01-01'
and p.fecha_partido >= '2016-01-01'

/* equipo que haya sumado mas goles de local el 2017*/

select aaa.nombre, max(bbb.total_local)
from
(select nombre from equipos) as aaa,
(select a.nombre as nombre , sum(b.goles_local) as total_local
from equipos a, partidos b
where a.id_equipos=b.fk_equipo_local
and b.fecha_partido>='2017-01-01' and b.fecha_partido < '2018-01-01'
group by a.nombre) as bbb
where aaa.nombre=bbb.nombre;


/* partido en el que metieron mas goles*/

select id_partidos, goles_local,goles_visitante, sum(goles_local+goles_visitante) as total
from partidos
group by id_partidos
order by total desc limit 1


/* nombre de los equipos que jugaron cada partido*/

select a.id_partidos, b.nombre, c.nombre
from partidos a, equipos b, equipos c
where
a.fk_equipo_local=b.id_equipos
and a.fk_equipo_visitante = c.id_equipos
order by a.id_partidos


/* partido donde se metieron mas goles de visitante*/

select id_partidos, goles_visitante
from partidos
order by goles_visitante desc limit 1

No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable