Todo lo que necesita saber sobre la instrucción GROUP BY de SQL

Todo lo que necesita saber sobre la instrucción GROUP BY de SQL

Gran parte del poder de las bases de datos relacionales proviene de filtrar datos y unir tablas. Es por eso que representamos esas relaciones en primer lugar. Pero los sistemas de bases de datos modernos proporcionan otra técnica valiosa: la agrupación.





La agrupación le permite extraer información resumida de una base de datos. Le permite combinar resultados para crear datos estadísticos útiles. La agrupación le evita escribir código para casos comunes, como promediar listas de cifras. Y puede hacer que los sistemas sean más eficientes.





¿Qué hace la cláusula GROUP BY?

GROUP BY, como sugiere el nombre, agrupa los resultados en un conjunto más pequeño. Los resultados constan de una fila para cada valor distinto de la columna agrupada. Podemos mostrar su uso mirando algunos datos de muestra con filas que comparten algunos valores comunes.





cómo mantener los programas ejecutándose en el modo de suspensión de Windows 10

La siguiente es una base de datos muy simple con dos tablas que representan álbumes de registros. Puede configurar una base de datos de este tipo escribir un esquema básico para su sistema de base de datos elegido. los álbumes la tabla tiene nueve filas con una clave principal identificación columna y columnas para nombre, artista, año de lanzamiento y ventas:

|_+_|

los artistas la mesa es aún más simple. Tiene siete filas con columnas de identificación y nombre:



|_+_|

Puede comprender varios aspectos de GROUP BY con solo un conjunto de datos simple como este. Por supuesto, un conjunto de datos de la vida real tendría muchas, muchas más filas, pero los principios siguen siendo los mismos.

Agrupación por una sola columna

Supongamos que queremos saber cuántos álbumes tenemos de cada artista. Comience con un típico SELECCIONE consulta para obtener la columna artist_id:





|_+_|

Esto devuelve las nueve filas, como se esperaba:

|_+_|

Para agrupar estos resultados por artista, agregue la frase GROUP BY artist_id :





|_+_|

Lo que da los siguientes resultados:

|_+_|

Hay siete filas en el conjunto de resultados, reducidas del total de nueve en el álbumes mesa. Cada uno único artist_id tiene una sola fila. Finalmente, para obtener los recuentos reales, agregue CONTAR(*) a las columnas seleccionadas:

|_+_|

Los resultados agrupan dos pares de filas para los artistas con identificadores. 2 y 6 . Cada uno tiene dos álbumes en nuestra base de datos.

Relacionado: La hoja de referencia de los comandos SQL esenciales para principiantes

Cómo acceder a datos agrupados con una función agregada

Es posible que haya utilizado el CONTAR funcionar antes, particularmente en el CONTAR(*) forma como se ve arriba. Obtiene el número de resultados en un conjunto. Puede usarlo para obtener el número total de registros en una tabla:

|_+_|

COUNT es una función agregada. Este término se refiere a funciones que traducen valores de varias filas en un solo valor. A menudo se utilizan junto con la instrucción GROUP BY.

En lugar de simplemente contar el número de filas, podemos aplicar una función agregada a los valores agrupados:

|_+_|

Las ventas totales que se muestran arriba para los artistas 2 y 6 son las ventas de sus múltiples álbumes combinadas:

|_+_|

Agrupación por varias columnas

Puede agrupar por más de una columna. Solo incluya varias columnas o expresiones, separadas por comas. Los resultados se agruparán según la combinación de estas columnas.

|_+_|

Por lo general, esto producirá más resultados que agrupar por una sola columna:

|_+_|

Tenga en cuenta que, en nuestro pequeño ejemplo, solo dos álbumes tienen el mismo año de lanzamiento y recuento de ventas (28 en 1977).

Funciones agregadas útiles

Aparte de COUNT, varias funciones funcionan bien con GROUP. Cada función devuelve un valor basado en los registros que pertenecen a cada grupo de resultados.

  • COUNT () devuelve el número total de registros coincidentes.
  • SUM () devuelve el total de todos los valores en la columna dada sumados.
  • MIN () devuelve el valor más pequeño en una columna determinada.
  • MAX () devuelve el valor más grande en una columna determinada.
  • AVG () devuelve el promedio medio. Es el equivalente de SUM () / COUNT ().

También puede utilizar estas funciones sin una cláusula GROUP:

cómo elegir un disco duro
|_+_|

Usando GROUP BY con una cláusula WHERE

Al igual que con un SELECT normal, aún puede usar WHERE para filtrar el conjunto de resultados:

|_+_| |_+_|

Ahora solo tiene los álbumes lanzados después de 1990, agrupados por artista. También puede usar una combinación con la cláusula WHERE, independientemente de GROUP BY:

|_+_| |_+_|

Sin embargo, tenga en cuenta que si intenta filtrar en función de una columna agregada:

|_+_|

Obtendrá un error:

|_+_|

Las columnas basadas en datos agregados no están disponibles para la cláusula WHERE.

Uso de la cláusula HAVING

Entonces, ¿cómo se filtra el conjunto de resultados después de que se ha realizado una agrupación? los TENIENDO cláusula trata de esta necesidad:

|_+_|

Tenga en cuenta que la cláusula HAVING viene después de GROUP BY. De lo contrario, es esencialmente un simple reemplazo del DÓNDE por TENER. Los resultados son:

|_+_|

Aún puede usar una condición WHERE para filtrar los resultados antes de la agrupación. Funcionará junto con una cláusula HAVING para filtrar después de la agrupación:

|_+_|

Solo un artista en nuestra base de datos lanzó más de un álbum después de 1990:

|_+_|

Combinar resultados con GROUP BY

La declaración GROUP BY es una parte increíblemente útil del lenguaje SQL. Puede proporcionar información resumida de datos, para una página de contenido, por ejemplo. Es una excelente alternativa a la obtención de grandes cantidades de datos. La base de datos maneja bien esta carga de trabajo adicional, ya que su mismo diseño la hace óptima para el trabajo.

Una vez que comprenda la agrupación y cómo unir varias tablas, podrá utilizar la mayor parte del poder de una base de datos relacional.

Cuota Cuota Pío Correo electrónico Cómo consultar varias tablas de bases de datos a la vez con uniones SQL

Aprenda a utilizar las uniones SQL para agilizar las consultas, ahorrar tiempo y sentirse como un usuario avanzado de SQL.

agregar un borde a una foto
Leer siguiente Temas relacionados
  • Programación
  • SQL
Sobre el Autor Bobby Jack(58 Artículos publicados)

Bobby es un entusiasta de la tecnología que trabajó como desarrollador de software durante la mayor parte de dos décadas. Es un apasionado de los juegos, trabaja como editor de reseñas en Switch Player Magazine y está inmerso en todos los aspectos de la publicación en línea y el desarrollo web.

Más de Bobby Jack

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse