Los últimos tutoriales de desarrollo web
 

SQL Cláusula HAVING


La cláusula HAVING

Se añadió la cláusula HAVING para SQL porque la palabra clave WHERE no se podría utilizar con las funciones de agregado.

Sintaxis SQL HAVING

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

Base de datos de demostración

En este tutorial vamos a utilizar la base de datos Neptuno conocido.

A continuación se muestra una selección de la "Orders" tabla:

Solicitar ID Identificación del cliente ID de empleado Fecha de orden IdDestinatario
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

Y una selección de la "Employees" tabla:

ID de empleado Apellido Nombre de pila Fecha de nacimiento Foto notas
1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

SQL ejemplo que tiene

Ahora queremos encontrar si alguno de los empleados ha registrado más de 10 órdenes.

Nosotros usamos la siguiente instrucción SQL:

Ejemplo

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Inténtalo tú mismo "

Ahora queremos encontrar si los empleados "Davolio" o "Fuller" se han registrado más de 25 órdenes.

Añadimos un ordinario cláusula WHERE a la instrucción SQL:

Ejemplo

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
WHERE LastName='Davolio' OR LastName='Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;

Inténtalo tú mismo "