Está en la página 1de 2

IES Suárez de Figueroa.

@Avanza
Módulo: Gestión de bases de datos Página: 1

Unidad didáctica 4. Realización de consultas.


Recurso 5. Ejemplos sentencias SELECT II

Base de datos utilizadas: NBA y Soft.

NBA.
1. Mostrar nombre de equipo y número de jugadores. Estas consultas son todas
iguales. Debemos agrupar por el campo que se indica y contar. En este caso
agrupamos por nombre_equipo. A cada grupo resultante se le aplica la función de
agregado, en este caso Count. Dentro de Count podemos poner cualquier campo,
pero no siempre obtendremos el mismo resultado. Suele ponerse la clave principal,
algún campo que no tenga nulos o el asterisco que cuenta las filas del grupo.

select nombre_equipo, count(*)


from jugadores
group by nombre_equipo

2. Mostrar procedencia y número de jugadores. Igual que la anterior.

select procedencia, count(*)


from jugadores
group by procedencia

3. Peso medio de los jugadores por equipo. Es del mismo estilo, agrupar por equipo y
aplicar la función, en este caso media (AVG).

select nombre_equipo, avg(peso)


from jugadores
group by nombre_equipo

4. Listado de jugadores que juegan en el mismo equipo que Pau Gasol. Consulta típica
de subselect. Como no sabemos a priori el equipo en el que juega este jugador,
debemos escribir una subselect que lo averigüe y pasar el resultado a la select
principal. La subselect se ejecuta antes y una sola vez.

select * from jugadores where


nombre_equipo = (Select Nombre_equipo
from jugadores where nombre ='Pau Gasol')

SOFT.

5. Mostrar los productos no vendidos. Los no vendidos son aquellos cuyo número no
aparece en la tabla detalle. Típica consulta de subselect.

select * from productos where


numeroproducto not in (select numproducto from detalle)
IES Suárez de Figueroa. @Avanza
Módulo: Gestión de bases de datos Página: 2

6. Mostrar las ventas del cliente con código BERGS. Los datos a mostrar son código,
nombre, número de venta, fecha y pagado. Consulta basada en dos tablas, por tanto
debemos poner ambas tablas en el from y luego eliminar las filas no deseadas
comparando clave principal y clave ajena, es decir, los campos por los que se
relacionan estas tablas.

select codigo, nombre, numeroventa, fechaventa, pagado


from cliente, ventas where codigo=cliente and codigo='BERGS'

Otra forma de resolverla es con Inner Join:

select codigo, nombre, numeroventa, fechaventa, pagado


from cliente inner join ventas
on cliente.codigo=ventas.cliente
where codigo='BERGS'

7. Mostrar código, nombre, número de venta y fecha de ésta. Deben aparecer los
clientes con y sin ventas. Estas consultas son típicas de left o right join .

select codigo, nombre, numeroventa, fechaventa


from cliente left join ventas on cliente.codigo=ventas.cliente

El left join hace que aparezcan las filas de la tabla de la izquierda (clientes) que tienen
ventas y las filas que no la tienen. Estas últimas presentan null en las columnas
numeroventa y fechaventa.

8. Contar el número de ventas por cada cliente. Deben aparecer los que tienen ventas
y los que no.

select codigo, nombre, count(numeroventa)


from cliente left join ventas on cliente.codigo=ventas.cliente
group by codigo

Típica de left join, agrupar y contar. Formamos grupos por código de cliente y contamos.
Ahora no podemos poner count(*) ya que nos diría que todos los clientes tienen al menos
una venta, por eso elegimos count(numeroventa), los clientes sin ventas tienen el valor 0 en
esta columna.

También podría gustarte