Resumen :en este tutorial, aprenderá a usar SQLite GROUP BY cláusula para crear un conjunto de filas de resumen a partir de un conjunto de filas.
Introducción a SQLite GROUP BY cláusula
El GROUP BY cláusula es una cláusula opcional de SELECT declaración. El GROUP BY cláusula un grupo seleccionado de filas en filas de resumen por valores de una o más columnas.
El GROUP BY cláusula devuelve una fila para cada grupo. Para cada grupo, puede aplicar una función agregada como MIN , MAX , SUM , COUNT o AVG para proporcionar más información sobre cada grupo.
La siguiente declaración ilustra la sintaxis de SQLite GROUP BY cláusula.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) Pruébalo
El GROUP BY la cláusula viene después del FROM cláusula del SELECT declaración. En caso de que una declaración contenga un WHERE cláusula, el GROUP BY la cláusula debe ir después de WHERE cláusula.
Siguiendo el GROUP BY cláusula es una columna o una lista de columnas separadas por comas que se utilizan para especificar el grupo.
SQLite GROUP BY ejemplos
Usamos las tracks tabla de la base de datos de muestra para la demostración.
SQLite GROUP BY cláusula con COUNT función
La siguiente declaración devuelve la identificación del álbum y el número de pistas por álbum. Utiliza el GROUP BY cláusula para agrupar pistas por álbum y aplica el COUNT() función a cada grupo.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Pruébalo
Puedes usar el ORDER BY cláusula para ordenar los grupos de la siguiente manera:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite GROUP BY y INNER JOIN cláusula
Puede consultar datos de varias tablas utilizando INNER JOIN cláusula, luego use el GROUP BY cláusula para agrupar filas en un conjunto de filas de resumen.
Por ejemplo, la siguiente instrucción une las tracks tabla con los albums tabla para obtener los títulos de los álbumes y usa el GROUP BY cláusula con el COUNT función para obtener el número de pistas por álbum.

SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite GROUP BY con HAVING cláusula
Para filtrar grupos, utiliza el GROUP BY con HAVING cláusula. Por ejemplo, para obtener los álbumes que tienen más de 15 pistas, usa la siguiente declaración:
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING COUNT(trackid) > 15;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite GROUP BY cláusula con SUM ejemplo de función
Puedes usar el SUM función para calcular el total por grupo. Por ejemplo, para obtener la longitud total y los bytes de cada álbum, utilice el SUM función para calcular el total de milisegundos y bytes.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite GROUP BY con MAX , MIN y AVG funciones
La siguiente declaración devuelve la identificación del álbum, el título del álbum, la duración máxima, la duración mínima y la duración promedio de las pistas en tracks mesa.
SELECT
tracks.albumid,
title,
min(milliseconds),
max(milliseconds),
round(avg(milliseconds),2)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite GROUP BY ejemplo de varias columnas
En el ejemplo anterior, hemos usado una columna en el GROUP BY cláusula. SQLite le permite agrupar filas por varias columnas.
Por ejemplo, para agrupar pistas por tipo de medio y género, utilice la siguiente instrucción:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Pruébalo
SQLite usa la combinación de valores de MediaTypeId y GenreId columnas como un grupo, por ejemplo, (1,1) y (1,2). Luego aplica el COUNT función para devolver el número de pistas en cada grupo.
SQLite GROUP BY ejemplo de fecha
Consulte la siguiente tabla de facturas de la base de datos de ejemplo:
La siguiente declaración devuelve el número de factura por años.
SELECT
STRFTIME('%Y', InvoiceDate) InvoiceYear,
COUNT(InvoiceId) InvoiceCount
FROM
invoices
GROUP BY
STRFTIME('%Y', InvoiceDate)
ORDER BY
InvoiceYear;Code language: SQL (Structured Query Language) (sql) Aquí está la salida:
En este ejemplo:
- La función
STRFTIME('%Y', InvoiceDate)devuelve un año a partir de una cadena de fecha. - El
GROUP BYcláusula agrupa las facturas por años. - La función
COUNT()devuelve el número de factura en cada año (o grupo).
En este tutorial, ha aprendido a usar SQLite GROUP BY cláusula para agrupar filas en un conjunto de filas de resumen.