SQL
Tutorial SQL: Filtrado de grupos de resultados con HAVING
SQL having: filtrado de resultados. Domina el filtrado de resultados en SQL utilizando la cláusula HAVING con ejemplos prácticos y detallados.
Aprende SQL GRATIS y certifícateEn SQL, la cláusula HAVING
se usa principalmente en conjunto con GROUP BY
para filtrar los resultados de grupos que no cumplen ciertas condiciones. Es similar a la cláusula WHERE
, pero mientras WHERE
filtra las filas individuales, HAVING
filtra los grupos.
Estructura básica de HAVING:
SELECT columna1, columna2, ...
FROM tabla
WHERE condicion
GROUP BY columna1, columna2, ...
HAVING condicion;
Ejemplo 1: Uso simple de HAVING
Se tiene una tabla de Pedidos
que tiene la siguiente estructura:
PedidoID | ProductoID | ClienteID | Cantidad |
---|---|---|---|
1 | 30 | 3 | 2 |
2 | 10 | 2 | 1 |
3 | 20 | 1 | 5 |
4 | 30 | 2 | 3 |
5 | 10 | 3 | 2 |
6 | 20 | 1 | 1 |
7 | 30 | 2 | 2 |
8 | 10 | 3 | 4 |
Objetivo: Encontrar los ProductoID
que se han pedido más de 4 veces.
Consulta:
SELECT ProductoID, SUM(Cantidad) as TotalPedidos
FROM Pedidos
GROUP BY ProductoID
HAVING SUM(Cantidad) > 4;
Esta consulta agrupa los pedidos por ProductoID
y luego utiliza HAVING
para filtrar aquellos grupos cuya cantidad total es mayor a 4.
ProductoID | TotalPedidos |
30 | 7 |
10 | 7 |
20 | 6 |
Aquí, vemos que cada uno de los productos (30, 10, 20) tiene un total de pedidos que excede el umbral de 4. Por ejemplo, el ProductoID
30 tiene un total de 7 pedidos, lo cual es la suma de las cantidades de pedidos (2 + 3 + 2) para ese producto en la tabla de Pedidos
.
Ejemplo 2: Uso de HAVING con WHERE
Objetivo: Filtrar pedidos del ClienteID
3 y encontrar productos pedidos más de 3 veces.
Consulta:
SELECT ProductoID, SUM(Cantidad) as TotalPedidos
FROM Pedidos
WHERE ClienteID = 3
GROUP BY ProductoID
HAVING SUM(Cantidad) > 3;
Primero se filtran las filas para el ClienteID
3 con WHERE
, luego se agrupan por ProductoID
, y finalmente se filtran los grupos con HAVING
.
ProductoID | TotalPedidos |
10 | 6 |
Aquí, el ProductoID
10 es el único producto que cumple con la condición de ser pedido más de 3 veces por el ClienteID
3. Este resultado se obtiene sumando las cantidades de pedidos del ProductoID
10 hechos por el ClienteID
3 (2 + 4).
Errores comunes y soluciones
- Un error común es usar
HAVING
sinGROUP BY
, lo que puede llevar a resultados confusos. Siempre asegúrate de queHAVING
se use en conjunto conGROUP BY
. - Otro error es confundir las condiciones que deben ir en
WHERE
con las que pertenecen aHAVING
. Recuerda queWHERE
se aplica antes del agrupamiento, yHAVING
después.
Conclusión
La cláusula HAVING
es una herramienta muy útil en SQL cuando es necesario filtrar grupos de datos en lugar de filas individuales. Sin embargo, se debe tener cuidado al utilizar HAVING
sin GROUP BY
, ya que los resultados pueden ser confusos y es probable que no sea lo que realmente se desea en la mayoría de las situaciones.
Ejercicios de esta lección Filtrado de grupos de resultados con HAVING
Evalúa tus conocimientos de esta lección Filtrado de grupos de resultados con HAVING con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Actualización de datos: UPDATE
Creación y uso de procedimientos almacenados
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Tipos de datos
Uso de índices y particiones
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Sentencias INSERT
Creación y uso de subqueries
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Clasificación de resultados con ORDER BY
Creación y manejo de usuarios y roles
Eliminación de datos: DELETE
Creación y uso de funciones
Vaciar tablas y bases de datos: DROP
Consultas básicas de selección: SELECT y WHERE
Creación de bases de datos y tablas
Filtrado de valores únicos con DISTINCT
Alterar la estructura de tablas existentes: ALTER TABLE
Creación de tablas e inserción de datos con SQL
Asignación y gestión de permisos
Optimización de consultas
Introducción a SQL
Triggers y eventos
Copias de seguridad y restauración de bases de datos
Filtrado de grupos de resultados con HAVING
Eliminación de datos: DELETE
Inserción de datos: INSERT INTO
Instalación de PostgreSQL
Agrupación de resultados con GROUP BY
Actualización de datos: UPDATE
Renombrar tablas y bases de datos: RENAME
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Bases de datos y tablas
Consultas básicas de selección SELECT y WHERE
Relaciones entre tablas
Todas las lecciones de SQL
Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Sql
Introducción Y Entorno
Sublenguajes De Sql: Data Definition Language Y Data Manipulation Language
Introducción Y Entorno
Instalación De Mysql
Introducción Y Entorno
Instalación De Postgresql
Introducción Y Entorno
Tipos De Datos
Introducción Y Entorno
Bases De Datos Y Tablas
Introducción Y Entorno
Creación De Bases De Datos Y Tablas: Create Database, Create Table
Operaciones Básicas
Consultas Básicas De Selección: Select Y Where
Operaciones Básicas
Inserción De Datos: Insert Into
Operaciones Básicas
Actualización De Datos: Update
Operaciones Básicas
Eliminación De Datos: Delete
Operaciones Básicas
Clasificación De Resultados Con Order By
Filtros Y Clasificación
Filtrado De Valores Únicos Con Distinct
Filtros Y Clasificación
Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min
Funciones Agregadas Y Agrupaciones
Agrupación De Resultados Con Group By
Funciones Agregadas Y Agrupaciones
Filtrado De Grupos De Resultados Con Having
Funciones Agregadas Y Agrupaciones
Relaciones Entre Tablas
Joins Y Subqueries
Uso De Inner Join, Left Join, Right Join, Full Join
Joins Y Subqueries
Creación Y Uso De Subqueries
Joins Y Subqueries
Alterar La Estructura De Tablas Existentes: Alter Table
Manipulación De Tablas Y Datos
Renombrar Tablas Y Bases De Datos: Rename
Manipulación De Tablas Y Datos
Vaciar Tablas Y Bases De Datos: Drop
Manipulación De Tablas Y Datos
Creación Y Uso De Funciones
Funciones Y Procedimientos Almacenados
Creación Y Uso De Procedimientos Almacenados
Funciones Y Procedimientos Almacenados
Creación Y Manejo De Usuarios Y Roles
Seguridad Y Administración De Bases De Datos Sql
Asignación Y Gestión De Permisos
Seguridad Y Administración De Bases De Datos Sql
Copias De Seguridad Y Restauración De Bases De Datos
Seguridad Y Administración De Bases De Datos Sql
Optimización De Consultas
Sintaxis Avanzada
Uso De Índices Y Particiones
Sintaxis Avanzada
Uso De Vistas
Sintaxis Avanzada
Triggers Y Eventos
Sintaxis Avanzada
Certificados de superación de SQL
Supera todos los ejercicios de programación del curso de SQL y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el propósito y uso de la cláusula
HAVING
en SQL para filtrar grupos de datos después de aplicarGROUP BY
. - Entender la diferencia entre
WHERE
yHAVING
y cómo se aplican a filas individuales y grupos, respectivamente. - Aprender a utilizar
HAVING
junto conWHERE
para filtrar datos antes y después de aplicar la cláusulaGROUP BY
.