0% encontró este documento útil (0 votos)
16 vistas8 páginas

Mysql

La consulta SQL obtiene el dorsal y nombre completo de atletas que han subido al podio al menos dos veces. Une las tablas atleta y competir, filtra por posiciones de podio, agrupa por atleta, filtra por número de podios y ordena los resultados.

Cargado por

gt.sandra26
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas8 páginas

Mysql

La consulta SQL obtiene el dorsal y nombre completo de atletas que han subido al podio al menos dos veces. Une las tablas atleta y competir, filtra por posiciones de podio, agrupa por atleta, filtra por número de podios y ordena los resultados.

Cargado por

gt.sandra26
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Objetivo:

Obtener el dorsal y el nombre completo (concatenando nombre y apellidos) de los atletas que
han subido al podio en al menos dos ocasiones. La información se ordena de mayor a menor
según el número de veces que han subido al podio.

Partes de la consulta:

1. Seleccionar las columnas:

 a.dorsal: El dorsal del atleta.

 concat(concat(a.nombre, " "),a.apellidos): El nombre completo del atleta,


concatenando el nombre, un espacio y los apellidos.

 count(*) as num_veces_podio: El número de veces que el atleta ha subido al podio.

2. Unir las tablas:

La consulta une las tablas atleta y competir mediante la condición c.dorsal_atl=a.dorsal. Esto
permite obtener la información del atleta y sus participaciones en las competiciones.

3. Filtrar por posiciones de podio:

La consulta se limita a las filas donde la posición del atleta en la competición (c.posicion) es 1,
2 o 3. Esto asegura que solo se consideren las participaciones en las que el atleta subió al
podio.

4. Agrupar por atleta:

La consulta se agrupa por el dorsal del atleta (a.dorsal) y el nombre (a.nombre) y los apellidos
(a.apellidos). Esto permite contar el número de veces que cada atleta ha subido al podio.

5. Filtrar por número de podios:

La consulta se filtra a los atletas que han subido al podio al menos dos veces (having
count(*)>=2). Esto elimina a los atletas que solo han subido al podio una vez.

6. Ordenar por número de podios:

La consulta se ordena de forma descendente (desc) por el número de veces que el atleta ha
subido al podio (num_veces_podio). Esto muestra primero a los atletas con más podios.

Ejemplo:

Suponiendo que tenemos las siguientes tablas:

Atleta:

Dorsal Nombre Apellidos


1 Juan Pérez

2 María López

3 Pedro García

drive_spreadsheetExportar a Hojas de cálculo

Competir:

Dorsal_atl Posición

1 1

2 2

1 3

3 1

2 2

drive_spreadsheetExportar a Hojas de cálculo

La consulta devolvería el siguiente resultado:

Dorsal Nombre completo Num_veces_podio

1 Juan Pérez 2

2 María López 2

drive_spreadsheetExportar a Hojas de cálculo

Explicación de las funciones:


 concat(): Concatena dos o más cadenas de texto.

 count(*): Cuenta el número de filas en un grupo.

 having: Filtra las filas de un grupo en función de un valor calculado.

 order by: Ordena las filas de un conjunto de resultados.

Recursos adicionales:

 Función CONCAT en SQL: [se quitó una URL no válida]

 Función COUNT en SQL: [se quitó una URL no válida]

 Cláusula HAVING en SQL: [se quitó una URL no válida]

 Cláusula ORDER BY en SQL: [se quitó una URL no válida]

Nota:

En tu enunciado mencionas que se debe mostrar el dorsal y el nombre y apellidos en el mismo


campo. La consulta ya lo hace al usar la función concat() para concatenar el nombre, un
espacio y los apellidos en la columna nombre_completo.

Espero que esta explicación te haya ayudado a entender la consulta SQL paso a paso.

share

more_vert

solo poniendo count, como sabe mysql que quiero contar las veces que el atleta ha subido al
podium?

volume_up

En la consulta, count(*) se utiliza para contar el número de veces que un atleta ha subido al
podio. Esto funciona porque:

1. La consulta se une a las tablas atleta y competir mediante la


condición c.dorsal_atl=a.dorsal. Esto significa que para cada fila de la tabla competir,
hay una fila correspondiente en la tabla atleta con la información del atleta.
2. La consulta se filtra por las filas donde la posición del atleta en la competición
(c.posicion) es 1, 2 o 3. Esto asegura que solo se consideren las filas donde el atleta ha
subido al podio.

3. La función count(*) cuenta el número de filas en el grupo actual. En este caso, el grupo
se define por el dorsal del atleta (a.dorsal).

En resumen, count(*) cuenta el número de veces que el dorsal del atleta aparece en las filas
donde la posición es 1, 2 o 3. Esto nos da el número de veces que el atleta ha subido al podio.

Ejemplo:

Suponiendo que tenemos la siguiente tabla competir:

Dorsal_atl Posición

1 1

2 2

1 3

3 1

2 2

drive_spreadsheetExportar a Hojas de cálculo

Si ejecutamos la siguiente consulta:

SQL

select a.dorsal, count(*) as num_veces_podio

from atleta a, competir c

where c.dorsal_atl=a.dorsal

and c.posicion in (1,2,3)

group by a.dorsal

Usa el código con precaución.


content_copy

Obtendremos el siguiente resultado:

Dorsal Num_veces_podio

1 2

2 2

3 1

drive_spreadsheetExportar a Hojas de cálculo

En este caso, count(*) ha contado el número de veces que cada dorsal aparece en las filas
donde la posición es 1, 2 o 3.

Recursos adicionales:

 Función COUNT en SQL: [se quitó una URL no válida]

share

more_vert

no lo entiendo

edit

Mostrar versiones

1.

2.

3.

4.

5.

volume_up

Explicación más detallada de COUNT(*) en la consulta:


1. Visualización de la relación entre las tablas:

Imagina que las tablas atleta y competir están representadas como dos conjuntos de datos:

Tabla atleta:

Dorsal Nombre Apellidos

1 Juan Pérez

2 María López

3 Pedro García

drive_spreadsheetExportar a Hojas de cálculo

Tabla competir:

Dorsal_atl Posición

1 1

2 2

1 3

3 1

2 2

drive_spreadsheetExportar a Hojas de cálculo

2. Filtrado por posiciones de podio:

Al usar la condición c.posicion in (1,2,3), seleccionamos solo las filas de la tabla competir
donde la posición del atleta es 1 (primer lugar), 2 (segundo lugar) o 3 (tercer lugar).

3. Agrupación por dorsal del atleta:


Luego, la consulta se agrupa por el dorsal del atleta en la tabla atleta. Esto crea grupos
separados para cada atleta, con todas sus participaciones en las competiciones.

4. Conteo de filas en cada grupo:

count(*) se utiliza dentro de cada grupo para contar el número de filas. En este caso, el
número de filas en cada grupo representa el número de veces que el atleta ha subido al podio.

5. Visualización del resultado:

La consulta finalmente muestra el dorsal del atleta y el número de veces que ha subido al
podio (num_veces_podio) para cada grupo.

Ejemplo:

Para el atleta con el dorsal 1, la consulta seleccionará las filas:

Dorsal_atl Posición

1 1

1 3

drive_spreadsheetExportar a Hojas de cálculo

Luego, count(*) contará el número de filas en este grupo, que es 2. Esto significa que el atleta
con el dorsal 1 ha subido al podio 2 veces.

También podría gustarte