MySQL GROUP BY (Español)

Resumen: En este tutorial, aprenderá a usar MySQL GROUP BY para agrupar filas en subgrupos basados en valores de columnas o expresiones.

Introducción a MySQL GROUP BY clause

la cláusulaGROUP BY agrupa un conjunto de filas en un conjunto de filas de resumen por valores de columnas o expresiones. La cláusula GROUP BY devuelve una fila para cada grupo. En otras palabras, reduce el número de filas en el conjunto de resultados.,

Que a menudo utilizan la etiqueta GROUP BY cláusula con funciones de agregado, tales como SUM, AVG, MAX, MIN y COUNT. La función aggregate que aparece en la cláusula SELECT proporciona información sobre cada grupo.

la cláusula GROUP BY es una cláusula opcional de la instrucción SELECT., El ejemplo siguiente ilustra el GROUP BY cláusula sintaxis:

El GROUP BY cláusula debe aparecer después de la etiqueta FROM y WHERE cláusulas. Después de las palabras clave GROUP BY hay una lista de columnas o expresiones separadas por comas que desea usar como criterio para agrupar filas.,

MySQL evaluates the GROUP BY clause after the FROM, WHERE and SELECT clauses and before the HAVING , ORDER BY and LIMIT clauses:

MySQL GROUP BY examples

Let’s take some example of using the GROUP BY clause.,

A) simple MySQL GROUP BY example

echemos un vistazo a la tabla orders en la base de datos de ejemplo.,

Supongamos desea agrupar los valores de el estado de la orden en subgrupos, se utiliza la etiqueta GROUP BY cláusula con el status columna como la siguiente consulta:

Code language: SQL (Structured Query Language) (sql)

Pruebe

Como puede ver, el GROUP BY cláusula devuelve únicas apariciones de status valores., Funciona como el operador DISTINCT como se muestra en la siguiente consulta:

Code language: SQL (Structured Query Language) (sql)

pruébelo

B) usando MySQL GROUP BY with aggregate functions

las funciones aggregate le permiten realizar el cálculo de un conjunto de filas y devolver un solo valor. La cláusula GROUP BY se usa a menudo con una función aggregate para realizar el cálculo y devolver un solo valor para cada subgrupo.,

Por ejemplo, si usted quiere saber el número de pedidos en cada estado, puede utilizar la etiqueta COUNT función con la etiqueta GROUP BY cláusula como sigue:

Code language: SQL (Structured Query Language) (sql)

Pruebe

el siguiente orders y orderdetails tabla.,

para obtener el importe total de todos los pedidos por estado, se une a la tabla orders con el orderdetails tabla y utilice la función SUM para calcular la cantidad total. Consulte la siguiente consulta:

Code language: SQL (Structured Query Language) (sql)

Pruebe

del mismo modo, la consulta siguiente devuelve el número de pedido y el importe total de cada pedido.,

Code language: SQL (Structured Query Language) (sql)

Pruebe

C) MySQL GRUPO con expresión de ejemplo

además De las columnas, puede agrupar las filas por las expresiones. La siguiente consulta obtiene las ventas totales para cada año.

Pruebe

En este ejemplo, se utiliza la etiqueta YEAR función para extraer los datos del año a partir de la fecha de la orden ( orderDate)., Solo incluimos pedidos con el estado shipped en las ventas totales. Tenga en cuenta que la expresión que aparece en la cláusula SELECT debe ser la misma que la de la cláusula GROUP BY.

D) usando MySQL GROUP BY with HAVING clause example

para filtrar los grupos devueltos por GROUP BY clause, usa una cláusula HAVING clause. La siguiente consulta utiliza la cláusula HAVING para seleccionar las ventas totales de los años posteriores a 2003.,

Code language: SQL (Structured Query Language) (sql)

Pruebe

La cláusula GROUP BY: MySQL vs estándar SQL

Estándar SQL no permite el uso de un alias en el GROUP BY cláusula, sin embargo, MySQL soporta esta.

por ejemplo, la siguiente consulta extrae el año de la fecha del pedido. Primero usa year como un alias de la expresión YEAR(orderDate) y, a continuación, utiliza la etiqueta year alias en el GROUP BY cláusula., Esta consulta no es válida en SQL estándar.

Pruebe

MySQL también permite ordenar los grupos en orden ascendente o descendente de los pedidos, mientras que el estándar SQL no. El orden predeterminado es ascendente., Por ejemplo, si usted desea conseguir el número de pedidos por estado y ordenar el estado en orden descendente, puede utilizar la etiqueta GROUP BY cláusula con la etiqueta DESC como la siguiente consulta:

Code language: SQL (Structured Query Language) (sql)

Pruebe

Observe que hemos utilizado DESC en el GROUP BY cláusula para ordenar la status en orden descendente., También podríamos especificar explícitamente ASC en la cláusula GROUP BY para ordenar los grupos por estado en orden ascendente.

en este tutorial, le hemos mostrado cómo usar la cláusula MySQL GROUP BY para agrupar filas en subgrupos basados en valores de columnas o expresiones.

  • ¿Fue útil este tutorial?
  • YesNo

Deja una respuesta

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

Ir a la barra de herramientas