SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Grupa SQLite według

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przecięcie SQLite

  2. SQLite wprowadza funkcję UNIXEPOCH()

  3. Generuj instrukcje INSERT z wyników zapytań SQLite

  4. java.lang.IllegalStateException:Nie można odczytać wiersza 0, col -1 z CursorWindow — problem z sqlite dla Androida

  5. Dodaj kolumnę do istniejącej tabeli w SQLite