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