¿Qué es la cláusula SQL Group by?
La cláusula GROUP BY es un comando SQL que se utiliza para secuencias de grupo que tienen los mismos valores. La cláusula GROUP BY se utiliza en la instrucción SELECT. Opcionalmente, se utiliza junto con funciones agregadas para proporcionar informes resumidos de la base de datos.
Eso es lo que hace resumen de datos de la base de datos.
Las consultas que contienen la cláusula GROUP BY se denominan consultas agrupadas y devuelven solo una fila para cada elemento agrupado.
Sintaxis de SQL GROUP AT
Ahora que sabemos qué es la cláusula GROUP BY de SQL, veamos la sintaxis de un grupo básico de tres consultas.
SELECT statements... GROUP BY column_name1[,column_name2,...] [HAVING condition];
AQUÍ
- La consulta del comando SQL SELECT estándar es «sentencias SELECT …».
- «GRUPO EN colún_ainm1«cláusula que realiza agrupaciones basadas en column_name1.
- «[,column_name2,…]»opcional; muestra los nombres de otras columnas cuando se agrupan por más de una columna.
- «[HAVING condition]»opcional; se utiliza para restringir las filas afectadas por la cláusula GROUP BY. Es similar a la cláusula PLACE.
Agrupar usando un Una sola columna
Para ayudar a comprender el efecto de la cláusula SQL Group By, ejecutemos una consulta simple que devuelva todas las entradas de género de la tabla de miembros.
SELECT `gender` FROM `members` ;
gender Female Female Male Female Male Male Male Male Male
Supongamos que queremos encontrar los valores únicos de género. Podemos usar la siguiente pregunta:
SELECT `gender` FROM `members` GROUP BY `gender`;
Ejecute el script anterior en Banco de trabajo MySQL contra Myflixdb nos da los siguientes resultados.
Tenga en cuenta que solo se han devuelto dos resultados. Esto se debe a que solo tenemos dos tipos de género masculino y femenino. La cláusula GROUP BY en SQL agrupó a todos los miembros «masculinos» y devolvió solo un conjunto. Hizo lo mismo con los miembros de «Mujeres».
Agrupación usando varias columnas
Supongamos que queremos una lista de categorías de ID de película y los años correspondientes en los que se estrenaron.
Veamos el resultado de esta sencilla pregunta.
SELECT `category_id`,`year_released` FROM `movies` ;
category_id year_released 1 2011 2 2008 NULL 2008 NULL 2010 8 2007 6 2007 6 2007 8 2005 NULL 2012 7 1920 8 NULL 8 1920
Hay muchos duplicados en el resultado anterior.
Ejecutemos la misma consulta usando el grupo tres en SQL:
SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;
La ejecución del script anterior en MySQL workbench contra myflixdb da los siguientes resultados que se muestran a continuación.
category_id year_released NULL 2008 NULL 2010 NULL 2012 1 2011 2 2008 6 2007 7 1920 8 1920 8 2005 8 2007
La cláusula GROUP BY se aplica a la identificación de la categoría y al año publicado para identificar único capas en nuestro ejemplo anterior.
Si el ID de categoría es el mismo pero el año de lanzamiento es diferente, entonces se trata en conjunto como único. Si el ID de categoría y el año de publicación son los mismos para más de una fila, entonces se considera un duplicado y solo se muestra una fila.
Agrupación y Funciones agregadas
Supongamos que queremos el número total de hombres y mujeres en nuestra base de datos. Podemos usar el siguiente script que se muestra a continuación para hacer precisamente eso.
SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;
La ejecución del script anterior en un banco de trabajo MySQL contra myflixdb nos da los siguientes resultados.
gender COUNT('membership_number') Female 3 Male 5
Los resultados que se muestran a continuación están agrupados por cada valor de género único publicado y el número de filas agrupadas se calcula utilizando la función agregada COUNT.
Restrinja los resultados de las preguntas utilizando el DESPUÉS cláusula
No siempre queremos agrupar todos los datos en una tabla separada. Habrá ocasiones en las que intentaremos restringir nuestros resultados a ciertos criterios. En tales casos, podemos usar la cláusula DESPUÉS
Supongamos que queremos saber todos los años de lanzamiento de la categoría de película con el ID 8. Usaremos el siguiente script para lograr nuestros resultados.
SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;
La ejecución del script anterior en un banco de trabajo MySQL contra Myflixdb nos da los siguientes resultados que se muestran a continuación.
movie_id title director year_released category_id 9 Honey mooners John Schultz 2005 8 5 Daddy's Little Girls NULL 2007 8
Tenga en cuenta que nuestra cláusula GROUP BY solo se aplica a películas con una categoría de identificación 8.
Resumen
- La cláusula GROUP BY SQL se utiliza para agrupar filas con los mismos valores.
- La cláusula GROUP BY se utiliza junto con la instrucción SQL SELECT.
- La instrucción SELECT utilizada en la cláusula GROUP BY solo puede usar nombres de columna, funciones agregadas, constantes y expresiones.
- La cláusula SQL At se utiliza para restringir los resultados devueltos por la cláusula GROUP BY.
- La cláusula MYSQL GROUP BY se utiliza para recopilar datos de varios registros y devolver registros organizados por una o más columnas.