Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite GROUP BY klauzula, aby utworzyć zestaw wierszy podsumowania z zestawu wierszy.
Wprowadzenie do SQLite GROUP BY klauzula
GROUP BY klauzula jest opcjonalną klauzulą SELECT oświadczenie. GROUP BY podziel wybraną grupę wierszy na wiersze podsumowania według wartości jednej lub więcej kolumn.
GROUP BY klauzula zwraca jeden wiersz dla każdej grupy. Dla każdej grupy możesz zastosować funkcję agregującą, taką jak MIN , MAX , SUM , COUNT lub AVG aby podać więcej informacji o każdej grupie.
Poniższa instrukcja ilustruje składnię SQLite GROUP BY klauzula.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) Wypróbuj
GROUP BY klauzula występuje po FROM klauzula SELECT oświadczenie. W przypadku, gdy wyciąg zawiera WHERE klauzula GROUP BY klauzula musi znajdować się po WHERE klauzula.
Po GROUP BY klauzula jest kolumną lub listą kolumn oddzielonych przecinkami używanych do określenia grupy.
SQLite GROUP BY przykłady
Używamy tracks tabela z przykładowej bazy danych do demonstracji.
SQLite GROUP BY klauzula z COUNT funkcja
Poniższa instrukcja zwraca identyfikator albumu i liczbę utworów na album. Używa GROUP BY klauzula grupująca utwory według albumu i stosująca COUNT() funkcji dla każdej grupy.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Wypróbuj
Możesz użyć ORDER BY klauzulę, aby posortować grupy w następujący sposób:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Wypróbuj
SQLite GROUP BY i INNER JOIN klauzula
Możesz wysyłać zapytania o dane z wielu tabel za pomocą INNER JOIN klauzulę, a następnie użyj GROUP BY klauzula grupująca wiersze w zestaw wierszy podsumowujących.
Na przykład następująca instrukcja łączy tracks tabela z albums tabeli, aby uzyskać tytuły albumu i używa GROUP BY klauzula z COUNT funkcja, aby uzyskać liczbę utworów na album.

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) Wypróbuj
SQLite GROUP BY z HAVING klauzula
Aby filtrować grupy, użyj GROUP BY z HAVING klauzula. Na przykład, aby uzyskać albumy zawierające więcej niż 15 utworów, użyj następującego stwierdzenia:
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) Wypróbuj
SQLite GROUP BY klauzula z SUM przykład funkcji
Możesz użyć SUM funkcja obliczania sumy na grupę. Na przykład, aby uzyskać całkowitą długość i liczbę bajtów dla każdego albumu, użyj SUM funkcja do obliczania sumy milisekund i bajtów.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Wypróbuj
SQLite GROUP BY z MAX , MIN i AVG funkcje
Poniższa instrukcja zwraca identyfikator albumu, tytuł albumu, maksymalną długość, minimalną długość i średnią długość utworów w tracks tabela.
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) Wypróbuj
SQLite GROUP BY przykład z wieloma kolumnami
W poprzednim przykładzie użyliśmy jednej kolumny w GROUP BY klauzula. SQLite umożliwia grupowanie wierszy według wielu kolumn.
Na przykład, aby pogrupować utwory według typu mediów i gatunku, użyj następującej instrukcji:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Wypróbuj
SQLite używa kombinacji wartości MediaTypeId i GenreId kolumny jako grupa, np. (1,1) i (1,2). Następnie stosuje COUNT funkcja zwracająca liczbę utworów w każdej grupie.
SQLite GROUP BY przykład daty
Zobacz następującą tabelę faktur z przykładowej bazy danych:
Poniższe oświadczenie zwraca numer faktury według lat.
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) Oto wynik:
W tym przykładzie:
- Funkcja
STRFTIME('%Y', InvoiceDate)zwraca rok z ciągu daty. GROUP BYklauzula grupuje faktury według lat.- Funkcja
COUNT()zwraca numer faktury w każdym roku (lub grupie).
W tym samouczku nauczyłeś się korzystać z SQLite GROUP BY klauzula grupująca wiersze w zestaw wierszy podsumowujących.