SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Unidad Didáctica 8. Consultas
resumen
JOSÉ JUAN SÁNCHEZ HERNÁNDEZ
IES Celia Viñas (Almería) - 2018/2019
Índice general
1 Consultas resumen 4
1.1 Funciones de agregación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Diferencia entre COUNT(*) y COUNT(columna) . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Contar valores distintos COUNT(DISTINCT columna) . . . . . . . . . . . . . . . . 6
1.2 Agrupamiento de filas (GROUP BY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Condición de agrupamiento (HAVING) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Ejemplo de agrupamiento de filas (GROUP BY) con condición de agrupamiento (HAVING) . . 9
2 Errores comunes 10
2.1 Error al contar el número de filas distintas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Error al intentar utilizar una función de agregación en la cláusula WHERE . . . . . . . . . . . . 10
2.3 Error al usar COUNT(*) y COUNT(columna) al hacer un LEFT JOIN . . . . . . . . . . . . . 11
3 Créditos 14
4 Referencias 15
5 Licencia 16
1
Índice de cuadros
2
Índice de figuras
3
Capítulo 1
Consultas resumen
Vamos a recordar la sintaxis para realizar una consulta con la sentencia SELECT en MySQL:
SELECT [DISTINCT] select_expr [, select_expr ...]
[FROM table_references]
[WHERE where_condition]
[GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC], ...]
[LIMIT {[offset,] row_COUNT | row_COUNT OFFSET offset}]
Es muy importante conocer en qué orden se ejecuta cada una de las cláusulas que forman la sentencia
SELECT. El orden de ejecución es el siguiente:
• Cláusula FROM.
• Cláusula WHERE (Es opcional, puede ser que no aparezca).
• Cláusula GROUP BY (Es opcional, puede ser que no aparezca).
• Cláusula HAVING (Es opcional, puede ser que no aparezca).
• Cláusula SELECT.
• Cláusula ORDER BY (Es opcional, puede ser que no aparezca).
• Cláusula LIMIT (Es opcional, puede ser que no aparezca).
En esta unidad vamos a trabajar con dos nuevas cláusulas GROUP BY y HAVING.
1.1 Funciones de agregación
Estas funciones realizan una operación específica sobre todas las filas de un grupo.
Las funciones de agregación más comunes son:
4
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
Función Descripción
MAX(expr) Valor máximo del grupo
MIN(expr) Valor mínimo del grupo
AVG(expr) Valor medio del grupo
SUM(expr) Suma de todos los valores del grupo
COUNT(*) Número de filas que tiene el resultado de la consulta
COUNT(columna) Número de valores no nulos que hay en esa columna
EnladocumentaciónoficialdeMySQLpuedeencontrarunalistacompletadetodaslasfuncionesdeagregación
que se pueden usar.
Importante: Las funciones de agregación sólo se pueden usar en las cláusulas SELECT Y HAVING.
1.1.1 Diferencia entre COUNT(*) y COUNT(columna)
• COUNT(*): Calcula el número de filas que tiene el resultado de la consulta.
• COUNT(columna): Cuenta el número de valores no nulos que hay en esa columna.
Importante:Tengaencuentaladiferenciaqueexisteentrelasfunciones COUNT(*) yCOUNT(columna),yaque
devolverán resultados diferentes cuando haya valores nulos en la columna que estamos usando en la función.
Ejemplos:
Supongamos que tenemos los siguientes valores en la tabla alumno:
id nombre apellido1 apellido2 fecha_nacimiento es_repetidor teléfono
1 María Sánchez Pérez 1990/12/01 no NULL
2 Juan Sáez Vega 1998/04/02 no 618253876
3 Pepe Ramírez Gea 1988/01/03 no NULL
4 Lucía López Ruiz 1993/06/13 sí 678516294
La consulta:
SELECT COUNT(teléfono)
FROM alumno;
devolverá:
José Juan Sánchez Hernández 5
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
COUNT(teléfono)
2
mientras que la consulta:
SELECT COUNT(*)
FROM alumno;
COUNT(*)
4
1.1.2 Contar valores distintos COUNT(DISTINCT columna)
Supongamos que tenemos los siguientes valores en la tabla producto:
id nombre precio código_fabricante
1 Disco duro SATA3 1TB 86 5
2 Memoria RAM DDR4 8GB 120 4
3 Disco SSD 1 TB 150 5
4 GeForce GTX 1050Ti 185 5
Y nos piden calcular el número de valores distintos de código de fabricante que aparecen en la tabla producto.
SELECT COUNT(DISTINCT código_fabricante)
FROM producto;
Esta consulta devolverá:
COUNT(DISTINCT código_fabricante)
2
José Juan Sánchez Hernández 6
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
1.2 Agrupamiento de filas (GROUP BY)
La cláusula GROUP BY nos permite crear grupos de filas que tienen los mismos valores en las columnas por las
que se desea agrupar.
Imagen: Imagen extraída del libro SQL: The Complete Reference de James R. Groff y otros.
En la documentación oficial de MySQL puede consultar la lista de modificadores que puede utilizar con
GROUP BY.
1.3 Condición de agrupamiento (HAVING)
La cláusula HAVING nos permite crear filtros sobre los grupos de filas que tienen los mismos valores en las
columnas por las que se desea agrupar.
José Juan Sánchez Hernández 7
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
Imagen: Imagen extraída del libro SQL: The Complete Reference de James R. Groff y otros.
José Juan Sánchez Hernández 8
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
1.4 Ejemplo de agrupamiento de filas (GROUP BY) con condición de
agrupamiento (HAVING)
José Juan Sánchez Hernández 9
Capítulo 2
Errores comunes
2.1 Error al contar el número de filas distintas
Ejemplo: Cuenta el número fabricantes distintos que aparecen en la tabla producto.
Consulta incorrecta.
SELECT DISTINCT COUNT(codigo_fabricante)
FROM producto;
Consulta correcta.
SELECT COUNT(DISTINCT codigo_fabricante)
FROM producto;
2.2 Error al intentar utilizar una función de agregación en la cláusula
WHERE
Las funciones de agregación sólo se pueden usar en las cláusulas SELECT Y HAVING, por lo tanto si intenta hacer
uso de una función de agregación en la cláusula WHERE obtendrá un error.
Ejemplo: Devuelve un listado con los productos que tienen un precio superior al precio medio de todos los
artículos que existen en la tabla productos.
Consulta incorrecta.
SELECT *
10
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
FROM producto
WHERE precio > AVG(precio);
Consulta correcta.
SELECT *
FROM producto
WHERE precio > (SELECT AVG(precio) FROM producto);
2.3 Error al usar COUNT(*) y COUNT(columna) al hacer un LEFT
JOIN
Ejemplo: Devuelve un listado con el número de productos que tiene cada fabricante. El listado debe incluir
aquellos fabricantes que no tienen productos asociados indicando que tienen 0 productos.
En este caso es necesario realizar un LEFT JOIN con las tablas fabricante y producto. Por ejemplo, al eje-
cutar la siguiente consulta podemos ver que los fabricantes Huawei y Xiaomi no tienen productos asociados.
SELECT fabricante.nombre, producto.codigo
FROM fabricante LEFT JOIN producto
ON producto.codigo_fabricante = fabricante.codigo
ORDER BY fabricante.codigo;
nombre codigo
… …
Crucial 2
Crucial 5
Gigabyte 4
Huawei NULL
Xiaomi NULL
Para contar el número de productos que tiene cada fabricante es necesario realizar un GROUP BY por el código
del fabricante y contar el número de filas que tiene cada uno de los grupos que hemos creado. Pero debemos
tener cuidado porque obtendremos resultados diferentes al contar el número de filas de cada grupo con COUNT
(*) y COUNT(producto.codigo). La opción correcta es hacer uso de COUNT(producto.codigo) porque
contará aquellas filas que tienen un valor distinto de NULL en la columna producto.codigo.
Consulta incorrecta.
José Juan Sánchez Hernández 11
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
SELECT fabricante.nombre, COUNT(*)
FROM fabricante LEFT JOIN producto
ON producto.codigo_fabricante = fabricante.codigo
GROUP BY fabricante.codigo
ORDER BY 2 DESC;
nombre COUNT(*)
Lenovo 2
Asus 2
Crucial 2
Hewlett-Packard 2
Seagate 1
Gigabyte 1
Samsung 1
Xiaomi 1
Huawei 1
Consulta correcta.
SELECT fabricante.nombre, COUNT(producto.codigo)
FROM fabricante LEFT JOIN producto
ON producto.codigo_fabricante = fabricante.codigo
GROUP BY fabricante.codigo
ORDER BY 2 DESC;
nombre COUNT(*)
Lenovo 2
Asus 2
Crucial 2
Hewlett-Packard 2
Seagate 1
Gigabyte 1
Samsung 1
José Juan Sánchez Hernández 12
Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019
nombre COUNT(*)
Xiaomi 0
Huawei 0
José Juan Sánchez Hernández 13
Capítulo 3
Créditos
Algunas de las imágenes utilizadas en este documento han sido extraídas de las siguientes fuentes:
• SQL: The Complete Reference de James R. Groff y otros.
14
Capítulo 4
Referencias
• Wikibook SQL Exercises.
• Tutorial SQL de w3resource.
• MySQL Join Types by Steve Stedman.
• Bases de Datos. 2ª Edición. Grupo editorial Garceta. Iván López Montalbán, Manuel de Castro Vázquez y
John Ospino Rivas.
• Consultas resumen.
15
Capítulo 5
Licencia
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter-
nacional.
16

Más contenido relacionado

La actualidad más candente

Database Keys & Relationship
Database Keys & RelationshipDatabase Keys & Relationship
Database Keys & RelationshipBellal Hossain
 
Angie Mero-Principales características de Access que se necesita para elabora...
Angie Mero-Principales características de Access que se necesita para elabora...Angie Mero-Principales características de Access que se necesita para elabora...
Angie Mero-Principales características de Access que se necesita para elabora...Angie Mero
 
SQL Queries
SQL QueriesSQL Queries
SQL QueriesNilt1234
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVictor Chavez
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 
Relaciones en access♥
Relaciones en access♥Relaciones en access♥
Relaciones en access♥AASSDDD
 
Definiciones base de datos
Definiciones base de datosDefiniciones base de datos
Definiciones base de datosCamilo Tellez
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 

La actualidad más candente (20)

Ejemplo ddl dml
Ejemplo ddl dmlEjemplo ddl dml
Ejemplo ddl dml
 
Database Keys & Relationship
Database Keys & RelationshipDatabase Keys & Relationship
Database Keys & Relationship
 
Guía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez HGuía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez H
 
Comandos ddl
Comandos ddlComandos ddl
Comandos ddl
 
Indices 1
Indices 1Indices 1
Indices 1
 
Angie Mero-Principales características de Access que se necesita para elabora...
Angie Mero-Principales características de Access que se necesita para elabora...Angie Mero-Principales características de Access que se necesita para elabora...
Angie Mero-Principales características de Access que se necesita para elabora...
 
Join sql
Join sqlJoin sql
Join sql
 
SQL Queries
SQL QueriesSQL Queries
SQL Queries
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
MySQL Views
MySQL ViewsMySQL Views
MySQL Views
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Sql commands
Sql commandsSql commands
Sql commands
 
Sql joins
Sql joinsSql joins
Sql joins
 
Joins And Its Types
Joins And Its TypesJoins And Its Types
Joins And Its Types
 
Relaciones en access♥
Relaciones en access♥Relaciones en access♥
Relaciones en access♥
 
Oracle Database View
Oracle Database ViewOracle Database View
Oracle Database View
 
Definiciones base de datos
Definiciones base de datosDefiniciones base de datos
Definiciones base de datos
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 

Similar a Guía 05. Consultas resumen con MySQL - José J Sánchez H

Similar a Guía 05. Consultas resumen con MySQL - José J Sánchez H (20)

bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
 
Bdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultasBdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultas
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Consultas condicionales en sq server
Consultas condicionales en sq serverConsultas condicionales en sq server
Consultas condicionales en sq server
 
Consultas en SQL
Consultas en SQLConsultas en SQL
Consultas en SQL
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Access Clase 02
Access Clase 02Access Clase 02
Access Clase 02
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Sq Lv1a
Sq Lv1aSq Lv1a
Sq Lv1a
 
Guia 7 tablas dinamicas
Guia 7 tablas dinamicasGuia 7 tablas dinamicas
Guia 7 tablas dinamicas
 
Taller indices 01
Taller indices 01Taller indices 01
Taller indices 01
 
SENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVERSENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVER
 
Teoria sql
Teoria sqlTeoria sql
Teoria sql
 
Herramientas de Analisis
Herramientas de AnalisisHerramientas de Analisis
Herramientas de Analisis
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De Definicion
 
Sentencias sql
Sentencias sqlSentencias sql
Sentencias sql
 
Sentencia select
Sentencia selectSentencia select
Sentencia select
 
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx
 

Más de José Ricardo Tillero Giménez

Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPJosé Ricardo Tillero Giménez
 

Más de José Ricardo Tillero Giménez (20)

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Clase 6 VLAN
 
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 

Último

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 

Último (20)

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 

Guía 05. Consultas resumen con MySQL - José J Sánchez H

  • 1. Unidad Didáctica 8. Consultas resumen JOSÉ JUAN SÁNCHEZ HERNÁNDEZ IES Celia Viñas (Almería) - 2018/2019
  • 2. Índice general 1 Consultas resumen 4 1.1 Funciones de agregación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.1 Diferencia entre COUNT(*) y COUNT(columna) . . . . . . . . . . . . . . . . . . . . 5 1.1.2 Contar valores distintos COUNT(DISTINCT columna) . . . . . . . . . . . . . . . . 6 1.2 Agrupamiento de filas (GROUP BY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Condición de agrupamiento (HAVING) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Ejemplo de agrupamiento de filas (GROUP BY) con condición de agrupamiento (HAVING) . . 9 2 Errores comunes 10 2.1 Error al contar el número de filas distintas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Error al intentar utilizar una función de agregación en la cláusula WHERE . . . . . . . . . . . . 10 2.3 Error al usar COUNT(*) y COUNT(columna) al hacer un LEFT JOIN . . . . . . . . . . . . . 11 3 Créditos 14 4 Referencias 15 5 Licencia 16 1
  • 5. Capítulo 1 Consultas resumen Vamos a recordar la sintaxis para realizar una consulta con la sentencia SELECT en MySQL: SELECT [DISTINCT] select_expr [, select_expr ...] [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_COUNT | row_COUNT OFFSET offset}] Es muy importante conocer en qué orden se ejecuta cada una de las cláusulas que forman la sentencia SELECT. El orden de ejecución es el siguiente: • Cláusula FROM. • Cláusula WHERE (Es opcional, puede ser que no aparezca). • Cláusula GROUP BY (Es opcional, puede ser que no aparezca). • Cláusula HAVING (Es opcional, puede ser que no aparezca). • Cláusula SELECT. • Cláusula ORDER BY (Es opcional, puede ser que no aparezca). • Cláusula LIMIT (Es opcional, puede ser que no aparezca). En esta unidad vamos a trabajar con dos nuevas cláusulas GROUP BY y HAVING. 1.1 Funciones de agregación Estas funciones realizan una operación específica sobre todas las filas de un grupo. Las funciones de agregación más comunes son: 4
  • 6. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 Función Descripción MAX(expr) Valor máximo del grupo MIN(expr) Valor mínimo del grupo AVG(expr) Valor medio del grupo SUM(expr) Suma de todos los valores del grupo COUNT(*) Número de filas que tiene el resultado de la consulta COUNT(columna) Número de valores no nulos que hay en esa columna EnladocumentaciónoficialdeMySQLpuedeencontrarunalistacompletadetodaslasfuncionesdeagregación que se pueden usar. Importante: Las funciones de agregación sólo se pueden usar en las cláusulas SELECT Y HAVING. 1.1.1 Diferencia entre COUNT(*) y COUNT(columna) • COUNT(*): Calcula el número de filas que tiene el resultado de la consulta. • COUNT(columna): Cuenta el número de valores no nulos que hay en esa columna. Importante:Tengaencuentaladiferenciaqueexisteentrelasfunciones COUNT(*) yCOUNT(columna),yaque devolverán resultados diferentes cuando haya valores nulos en la columna que estamos usando en la función. Ejemplos: Supongamos que tenemos los siguientes valores en la tabla alumno: id nombre apellido1 apellido2 fecha_nacimiento es_repetidor teléfono 1 María Sánchez Pérez 1990/12/01 no NULL 2 Juan Sáez Vega 1998/04/02 no 618253876 3 Pepe Ramírez Gea 1988/01/03 no NULL 4 Lucía López Ruiz 1993/06/13 sí 678516294 La consulta: SELECT COUNT(teléfono) FROM alumno; devolverá: José Juan Sánchez Hernández 5
  • 7. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 COUNT(teléfono) 2 mientras que la consulta: SELECT COUNT(*) FROM alumno; COUNT(*) 4 1.1.2 Contar valores distintos COUNT(DISTINCT columna) Supongamos que tenemos los siguientes valores en la tabla producto: id nombre precio código_fabricante 1 Disco duro SATA3 1TB 86 5 2 Memoria RAM DDR4 8GB 120 4 3 Disco SSD 1 TB 150 5 4 GeForce GTX 1050Ti 185 5 Y nos piden calcular el número de valores distintos de código de fabricante que aparecen en la tabla producto. SELECT COUNT(DISTINCT código_fabricante) FROM producto; Esta consulta devolverá: COUNT(DISTINCT código_fabricante) 2 José Juan Sánchez Hernández 6
  • 8. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 1.2 Agrupamiento de filas (GROUP BY) La cláusula GROUP BY nos permite crear grupos de filas que tienen los mismos valores en las columnas por las que se desea agrupar. Imagen: Imagen extraída del libro SQL: The Complete Reference de James R. Groff y otros. En la documentación oficial de MySQL puede consultar la lista de modificadores que puede utilizar con GROUP BY. 1.3 Condición de agrupamiento (HAVING) La cláusula HAVING nos permite crear filtros sobre los grupos de filas que tienen los mismos valores en las columnas por las que se desea agrupar. José Juan Sánchez Hernández 7
  • 9. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 Imagen: Imagen extraída del libro SQL: The Complete Reference de James R. Groff y otros. José Juan Sánchez Hernández 8
  • 10. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 1.4 Ejemplo de agrupamiento de filas (GROUP BY) con condición de agrupamiento (HAVING) José Juan Sánchez Hernández 9
  • 11. Capítulo 2 Errores comunes 2.1 Error al contar el número de filas distintas Ejemplo: Cuenta el número fabricantes distintos que aparecen en la tabla producto. Consulta incorrecta. SELECT DISTINCT COUNT(codigo_fabricante) FROM producto; Consulta correcta. SELECT COUNT(DISTINCT codigo_fabricante) FROM producto; 2.2 Error al intentar utilizar una función de agregación en la cláusula WHERE Las funciones de agregación sólo se pueden usar en las cláusulas SELECT Y HAVING, por lo tanto si intenta hacer uso de una función de agregación en la cláusula WHERE obtendrá un error. Ejemplo: Devuelve un listado con los productos que tienen un precio superior al precio medio de todos los artículos que existen en la tabla productos. Consulta incorrecta. SELECT * 10
  • 12. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 FROM producto WHERE precio > AVG(precio); Consulta correcta. SELECT * FROM producto WHERE precio > (SELECT AVG(precio) FROM producto); 2.3 Error al usar COUNT(*) y COUNT(columna) al hacer un LEFT JOIN Ejemplo: Devuelve un listado con el número de productos que tiene cada fabricante. El listado debe incluir aquellos fabricantes que no tienen productos asociados indicando que tienen 0 productos. En este caso es necesario realizar un LEFT JOIN con las tablas fabricante y producto. Por ejemplo, al eje- cutar la siguiente consulta podemos ver que los fabricantes Huawei y Xiaomi no tienen productos asociados. SELECT fabricante.nombre, producto.codigo FROM fabricante LEFT JOIN producto ON producto.codigo_fabricante = fabricante.codigo ORDER BY fabricante.codigo; nombre codigo … … Crucial 2 Crucial 5 Gigabyte 4 Huawei NULL Xiaomi NULL Para contar el número de productos que tiene cada fabricante es necesario realizar un GROUP BY por el código del fabricante y contar el número de filas que tiene cada uno de los grupos que hemos creado. Pero debemos tener cuidado porque obtendremos resultados diferentes al contar el número de filas de cada grupo con COUNT (*) y COUNT(producto.codigo). La opción correcta es hacer uso de COUNT(producto.codigo) porque contará aquellas filas que tienen un valor distinto de NULL en la columna producto.codigo. Consulta incorrecta. José Juan Sánchez Hernández 11
  • 13. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 SELECT fabricante.nombre, COUNT(*) FROM fabricante LEFT JOIN producto ON producto.codigo_fabricante = fabricante.codigo GROUP BY fabricante.codigo ORDER BY 2 DESC; nombre COUNT(*) Lenovo 2 Asus 2 Crucial 2 Hewlett-Packard 2 Seagate 1 Gigabyte 1 Samsung 1 Xiaomi 1 Huawei 1 Consulta correcta. SELECT fabricante.nombre, COUNT(producto.codigo) FROM fabricante LEFT JOIN producto ON producto.codigo_fabricante = fabricante.codigo GROUP BY fabricante.codigo ORDER BY 2 DESC; nombre COUNT(*) Lenovo 2 Asus 2 Crucial 2 Hewlett-Packard 2 Seagate 1 Gigabyte 1 Samsung 1 José Juan Sánchez Hernández 12
  • 14. Unidad Didáctica 8. Consultas resumen IES Celia Viñas (Almería) - 2018/2019 nombre COUNT(*) Xiaomi 0 Huawei 0 José Juan Sánchez Hernández 13
  • 15. Capítulo 3 Créditos Algunas de las imágenes utilizadas en este documento han sido extraídas de las siguientes fuentes: • SQL: The Complete Reference de James R. Groff y otros. 14
  • 16. Capítulo 4 Referencias • Wikibook SQL Exercises. • Tutorial SQL de w3resource. • MySQL Join Types by Steve Stedman. • Bases de Datos. 2ª Edición. Grupo editorial Garceta. Iván López Montalbán, Manuel de Castro Vázquez y John Ospino Rivas. • Consultas resumen. 15
  • 17. Capítulo 5 Licencia Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter- nacional. 16