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 BY
klauzula 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.