MySQL GROUP BY y teniendo cláusula con ejemplos

 

¿Qué es la Cláusula Group by?

La cláusula GROUP BY es un comando SQL que se usa para agrupar filas que tienen los mismos valores .

La cláusula GROUP BY se utiliza en la instrucción SELECT. Opcionalmente se usa junto con funciones agregadas para producir informes resumidos de la base de datos.

Eso es lo que hace, resumiendo los datos de la base de datos.

Las consultas que contienen la cláusula GROUP BY se denominan consultas agrupadas y solo devuelven una sola fila para cada elemento agrupado.

GROUP BY Sintaxis

Ahora que sabemos cuál es la cláusula GROUP By, veamos la sintaxis para un grupo básico por consulta.

AQUÍ

  • “Sentencias SELECT …” es la consulta estándar del comando SQL SELECT.
  • ” GROUP BY column_name1 ” es la cláusula que realiza la agrupación basada en column_name1.
  • “[, column_name2, …]” es opcional; representa otros nombres de columna cuando la agrupación se realiza en más de una columna.
  •  “[TENER condición]” es opcional; se usa para restringir las filas afectadas por la cláusula GROUP BY. Es similar a la cláusula WHERE.

Agrupación con una sola columna

Para ayudar a comprender el efecto de la cláusula Group By, ejecutemos una consulta simple que devuelva todas las entradas de género de la tabla de miembros.

género
Hembra
Hembra
Masculino
Hembra
Masculino
Masculino
Masculino
Masculino
Masculino

Supongamos que queremos obtener los valores únicos para los géneros. Podemos usar una siguiente consulta:

Ejecutar el script anterior en MySQL workbench contra Myflixdb nos da los siguientes resultados.

género
Hembra
Masculino

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 agrupó a todos los miembros “Male” y solo devolvió una sola fila. Hizo lo mismo con los miembros “Femeninos”.

Agrupación utilizando múltiples columnas

Supongamos que queremos obtener una lista de la categoría de la película y los años correspondientes en los que fueron lanzados.

Observemos el resultado de esta simple consulta

categoria ID añorelado
1 2011
2 2008
NULO 2008
NULO 2010
8 2007
6 2007
6 2007
8 2005
NULO 2012
7 1920
8 NULO
8 1920

El resultado anterior tiene muchos duplicados.

Ejecutamos la misma consulta usando el grupo por –

Ejecutar el script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados que se muestran a continuación.

categoria ID añorelado
NULO 2008
NULO 2010
NULO 2012
1 2011
2 2008
6 2007
7 1920
8 1920
8 2005
8 2007

La cláusula GROUP BY funciona tanto en la identificación de categoría como en el año publicado para identificar filas únicas en nuestro ejemplo anterior.

Si el ID de categoría es el mismo pero el año publicado es diferente, una fila se trata como única. Si el ID de categoría y el año publicado son los mismos para más de una fila, se considera una fila duplicada y solo una se muestra.

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 eso.

Ejecutar el script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados.

género COUNT (‘membership_number’)
Hembra 3
Masculino 5

Los resultados que se muestran a continuación se agrupan por cada valor de género único publicado y el número de filas agrupadas se cuenta utilizando la función de agregado COUNT.

Restringir los resultados de la consulta utilizando la cláusula HAVING

No siempre es deseable realizar agrupaciones en todos los datos de una tabla determinada. Habrá ocasiones en que querremos restringir nuestros resultados a un determinado criterio dado. En tales casos, podemos usar la cláusula HAVING

Supongamos que queremos saber todos los años de lanzamiento para la categoría de película id 8. Usaríamos la siguiente secuencia de comandos para lograr nuestros resultados.

Ejecutar el script anterior en MySQL workbench contra Myflixdb nos da los siguientes resultados que se muestran a continuación.

movie_id título director añorelado categoria ID
9 Honey Mooners John Schultz 2005 8
5 Las hijas de papá NULO 2007 8

Tenga en cuenta que solo las películas con id. De categoría 8 se han visto afectadas por nuestra cláusula GROUP BY.

Resumen

  • La cláusula GROUP BY se usa para agrupar filas con los mismos valores.
  • La cláusula GROUP BY se usa junto con la instrucción SQL SELECT.
  • La instrucción SELECT utilizada en la cláusula GROUP BY solo se puede usar con nombres de columnas, funciones agregadas, constantes y expresiones.
  • La cláusula HAVING se usa para restringir los resultados devueltos por la cláusula GROUP BY.
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *