sql >> Base de Datos >  >> RDS >> Mysql

Agrupar filas usando la cláusula Agrupar por en MySQL

Este tutorial es parte de la serie Aprenda consultas SQL básicas usando MySQL. En este tutorial, discutiremos las consultas SQL para agrupar las filas de la tabla en MySQL utilizando la cláusula GROUP BY con las funciones agregadas. También puede seguir Uso de funciones agregadas (SUM, AVG, MAX, MIN, COUNT, DISTINCT) en MySQL para aprender las funciones agregadas.

Agrupar por consulta

El GRUPO POR La cláusula se puede utilizar para realizar la agrupación de las filas de la tabla. También se puede utilizar con las funciones agregadas para generar informes y recopilar datos estadísticos.

# GROUP BY - Syntax
SELECT column_1, column_2, ..., [<aggregate function> AS <column>] FROM `table_name` GROUP BY column_1, column_2, ...;

Explicación de consulta

El GRUPO POR La cláusula se puede utilizar para agrupar las filas especificando las columnas para formar el conjunto de filas.

Podemos usar funciones agregadas para usar efectivamente la cláusula GROUP BY para generar los informes y recopilar datos estadísticos.

La agrupación se puede aplicar en varias columnas donde la primera columna formará el grupo principal y las columnas posteriores formarán subgrupos.

Ejemplos

Esta sección proporciona ejemplos para realizar agrupaciones utilizando la cláusula GROUP BY con y sin funciones de agregación. Utilice la consulta que se menciona a continuación para crear la tabla de usuarios que tenga la identificación, el nombre, el apellido, la edad y las columnas activas para almacenar los datos del usuario.

# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`age` SMALLINT(6) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));

La consulta mencionada a continuación se puede utilizar para insertar datos de prueba en la tabla de usuario.

# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `age`, `active` ) VALUES
( 1, 'John', 'Smith', 18, 1 ),
( 2, 'Rick', 'Jones', 19, 1 ),
( 3, 'John', 'Ponting', 16, 0 ),
( 4, 'Harsh', 'Upadhyay', 20, 1 ),
( 5, 'Tajwinder', 'Singh', 18, 0 );

La consulta mencionada anteriormente insertará 5 filas en la tabla con la identificación, el nombre, el apellido y las columnas activas para representar a 5 usuarios diferentes.

Ahora usaremos la cláusula GROUP BY sin las funciones agregadas para agrupar las filas. Se puede hacer usando la cláusula GROUP BY en MySQL como se muestra a continuación.

# GROUP BY - Generate the set of active values
SELECT active from user GROUP BY active;

# Result
1
0

# GROUP BY - Generate the set of first name
SELECT first_name from user GROUP BY first_name;

# Result
John
Rick
Harsh
Tajwinder

Las consultas mencionadas anteriormente devolvieron el conjunto de resultados al agrupar las filas usando la cláusula GROUP BY. Ahora agruparemos las filas con la función agregada como se muestra a continuación.

# GROUP BY - Get the maximum age of all users with specific first name
SELECT first_name, MAX(age) AS max_age from user GROUP BY first_name;

# Result
John 18
Rick 19
Harsh 20
Tajwinder 18

# GROUP BY - Get the average age of all users with specific first name
SELECT first_name, AVG(age) AS avg_age from user GROUP BY first_name;

# Result
John 17.0000
Rick 19.0000
Harsh 20.0000
Tajwinder 18.0000

Así es como podemos usar la cláusula GROUP BY con y sin las funciones agregadas para agrupar las filas de la tabla para las columnas específicas.