¿Cómo usar HAVING con funciones agregadas en SQL?

SQL proporciona muchas funciones integradas para realizar tareas. Hay 4 tipos de funciones Funciones de fecha, funciones de caracteres, funciones numéricas y funciones agregadas. 

Aquí veremos funciones agregadas y cómo usarlas con la palabra clave HAVING .

Las funciones agregadas son funciones integradas en la base de datos que actúan en varias filas de la tabla y producen una única salida. Básicamente, hay 5 funciones agregadas que usamos con frecuencia en SQL. Las funciones agregadas son deterministas. Las funciones agregadas comunes son las siguientes:

  • COUNT() : Calcula el número total de filas en la tabla, devuelve un valor único.
  • AVG() : Calcula el promedio de los valores de la columna a la que se aplica.
  • MIN() : Devuelve el valor mínimo en la columna a la que se aplica.
  • MAX() : Devuelve el valor máximo de la columna a la que se aplica.
  • SUM() : Devuelve la suma de todos los valores de la columna a la que se aplica.

¿ Cuándo usar la palabra clave HAVING ?

La palabra clave WHERE que usamos para filtrar datos en la condición dada funciona bien con operadores SQL como el operador aritmético, el operador de comparación, etc., pero cuando se trata de funciones agregadas, usamos la palabra clave HAVING para ordenar los datos en la condición dada. La cláusula GROUP BY también se usa con la palabra clave HAVING.

Sintaxis:

SELECT column_name(s) 
FROM table_name 
WHERE condition 
GROUP BY expression 
HAVING condition 
ORDER BY expression 
LIMIT value;

Para usar SUM() con la cláusula Tener:

Paso 1: Crear una base de datos

Consulta:

CREATE DATABASE database_name;

Paso 2: Cree una tabla llamada productos.

Consulta:

CREATE TABLE PRODUCTS(product_id int primary key, product_name varchar(45), product_cost float);

Paso 3: Insertar valores en la tabla

Consulta:

INSERT INTO PRODUCTS VALUES 
(1001, 'Colgate Toothpaste', 2.25), (1002 'T-Shirt', 5), 
(1003, 'Jeans', 6.5), (1004, 'Shorts', 4.5), 
(1005, 'Sneakers', 8.99), (1007, 'Mouthwash', 3.35), 
(1008, 'Denim Jeans', 8.99), (1009, 'Synsodyne Toothpaste', 3.35);

Paso 4: Ahora veamos el contenido de la tabla de productos.

Consulta:

SELECT * FROM products;

Producción:

Paso 5: Ahora nuestra tarea es imprimir todos aquellos productos cuya suma del costo del producto sea mayor a 3.50.

Consulta:

SELECT product_name, product_cost  
FROM products  
GROUP BY product_name, product_cost  
HAVING SUM(product_cost) > 3.5  
ORDER BY product_cost;

Producción:

TABLA DE PRODUCTOS

Aquí solo se muestran aquellos productos cuyo costo es mayor a 3.5 

Para usar MAX() y MIN() con la cláusula Have

Estamos usando la misma tabla de productos que usamos en el ejemplo anterior.

Nuestra tarea es encontrar el nombre de los productos cuyo precio máximo sea mayor a 7 y aquellos nombres de productos cuyo precio mínimo sea menor a 3.

Consulta:

SELECT * FROM products;

CONSULTA 1(Para buscar productos con precio máximo superior a 7)

SELECT product_name 
FROM products 
GROUP BY product_name 
HAVING MAX(product_cost) > 7;

PRODUCCIÓN

CONSULTA 2(Para encontrar productos con un precio mínimo inferior a 3)

SELECT product_name 
FROM products 
GROUP BY product_name 
HAVING MIN(product_cost) < 3;

Producción:

 Para usar AVG() con la cláusula Have

Usaremos la tabla de productos para demostrar esta parte.

Consulta:

SELECT * FROM products;

Ahora, queremos seleccionar aquellos productos cuyo precio sea mayor que el precio medio de la tabla de productos.

Consulta:

SELECT product_name
FROM products
GROUP BY product_name
HAVING AVG(product_cost) > (SELECT AVG(product_cost) FROM products);

Producción:

Aquí sólo están presentes aquellos productos cuyo precio medio es superior al precio medio de la tabla de productos.

Para usar Count() con la cláusula Have

Paso 1: Crearemos una base de datos.

Consulta:

CREATE DATABASE database_name;

Paso 2: Crear inicio de sesión en la tabla. 

Consulta:

CREATE TABLE login(signin_id int PRIMARY KEY ,customer_id int, date_login date);

Paso 3:   Insertar valores en la tabla. 

Consulta:

INSERT INTO login values
(1, 121, '2021-10-21'), (2, 135, '2021-05-25'),  
(3, 314, '2021-03-13'), (4, 245, '2021-07-19'),  
(5, 672, '2021-09-23'), (6, 135, '2021-06-12'),  
(7,120,'2021-06-14'), (8, 121, '2021-04-24'),  
(9,135, '2021-06-15'), (10, 984, '2021-01-30');

Paso 4: Mostrar el contenido de la tabla.

Consulta:

SELECT * FROM login;

Producción:

Ahora queremos mostrar las identificaciones de clientes que ocurrieron al menos 2 veces.

Consulta:

SELECT customer_id  
FROM login
 GROUP BY customer_id 
HAVING COUNT(customer_id) >=2 ;

Producción:

Aquí customer_id 121 y 135 ocurrieron al menos 2 veces.

Publicación traducida automáticamente

Artículo escrito por utkarshtyagi0066 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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