sql >> Base de Datos >  >> RDS >> SQLite

Agrupar SQLite por

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.