> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/sql/clausula-having.md).

# CLÁUSULA HAVING

WHERE FILTRA LAS FILAS/REGISTROS ANTES DE QUE SE REALICE CUALQUIER AGRUPACIÓN.

EN CAMBIO HAVING PERMITE FILTRAR GRUPOS QUE SE CREARON CON GROUP BY. FILTRA BASANDOSE EN CONDICIONES ESPECIFICAS.

HAVING NOS PERMITE FILTRAR EN BASE A LAS FUNCIONES DE AGREGACIÓN.

HAVING SIEMPRE VA ACOMPAÑADO DE GROUP BY.

```sql
WHERE -> ANTES DE CUALQUIER AGRUPACIÓN
GROUP BY -> AGRUPACIÓN
HAVING -> DESPUÉS DE LA AGRUPACIÓN
```

EJ:

```sql
Se quiere saber los PROYECTOS "En progreso" cuya duración media sea mayor a X
```

```sql
SELECT NOMBRE_PROYECTO, ESTADO, AVG(DURACION) AS DURACION_PROMEDIO FROM proyectos WHERE ESTADO = 'En progreso' GROUP BY NOMBRE_PROYECTO HAVING AVG(DURACION) > 23;
```
