Cláusula HAVING de SQL

¿Qué hace la cláusula HAVING en una consulta?

La cláusula HAVING es como WHERE pero opera sobre registros agrupados devueltos por un GROUP BY.
HAVING se aplica a los registros de grupo resumidos, mientras que WHERE se aplica a los registros individuales.
Sólo se devolverán los grupos que cumplan los criterios de HAVING.

HAVING requiere que esté presente una cláusula GROUP BY.
Tanto WHERE como HAVING pueden utilizarse en la misma consulta al mismo tiempo.

La sintaxis HAVING de SQL

La sintaxis general es

SELECT column-names FROM table-name WHERE condition GROUP BY column-namesHAVING condition
La sintaxis general con ORDER BY es:
SELECT column-names FROM table-name WHERE condition GROUP BY column-namesHAVING condition ORDER BY column-names

CUSTOMER

Id

Nombre

Apellido

Ciudad

País

Teléfono

SQL GROUP BY Ejemplos

Problema: Listar el número de clientes de cada país.
Incluir sólo los países con más de 10 clientes.
SELECT COUNT(Id), Country FROM Customer GROUP BY CountryHAVING COUNT(Id) > 10
Resultado: 3 registros
Cuento País
11 Francia
11 Alemania 13 EEUU

CUSTOMER

Id

Nombre

Apellido

Ciudad

Teléfono

Problema: Enumerar el número de clientes de cada país,
excepto Estados Unidos, ordenados de mayor a menor.
Incluya sólo los países con 9 o más clientes.
SELECT COUNT(Id), Country FROM Customer WHERE Country 'USA' GROUP BY CountryHAVING COUNT(Id) >= 9 ORDER BY COUNT(Id) DESC
Resultado: 3 registros

.

Cuento País
11 Francia
11 Alemania
9 Brasil

ORDEN

Id

Fecha de pedido

Número de pedido

Id de cliente

Importe total

CUSTOMER

Id

Nombre

Apellido

Ciudad

País

Teléfono

Problema: Listar todos los clientes con pedidos promedio
entre 1000 y 1200 dólares.
SELECT AVG(TotalAmount), FirstName, LastName FROM O JOIN Customer C ON O.CustomerId = C.Id GROUP BY FirstName, LastNameHAVING AVG(TotalAmount) BETWEEN 1000 AND 1200
Resultado: 10 registros
Promedio Nombre Apellido
1081.215000 Miguel Ángel Paolino
1063.420000 Isabel de Castro 1008.440000 Alexander Feuer 1062.038461 Thomas Hardy 1107.806666 Pirkko Koskitalo 1174.945454 Janete Limeira 1073.621428 Antonio Moreno 1065.385000 Rita Müller 1183.010000 José Pedro Freyre 1057.386666 Carine Schmitt

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *