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 BY
clá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.