SQLite
 sql >> база данни >  >> RDS >> SQLite

SQLite Group By

Резюме :в този урок ще научите как да използвате SQLite GROUP BY клауза за създаване на набор от обобщени редове от набор от редове.

Въведение в SQLite GROUP BY клауза

GROUP BY клаузата е незадължителна клауза на SELECT изявление. GROUP BY клауза избрана група от редове в обобщени редове по стойности на една или повече колони.

GROUP BY клаузата връща един ред за всяка група. За всяка група можете да приложите агрегатна функция като MIN , MAX , SUM , COUNT или AVG за да предоставите повече информация за всяка група.

Следното изявление илюстрира синтаксиса на SQLite GROUP BY клауза.

SELECT 
    column_1,
    aggregate_function(column_2) 
FROM 
    table
GROUP BY 
    column_1,
    column_2;
Code language: SQL (Structured Query Language) (sql)

Опитайте го

GROUP BY клаузата идва след FROM клауза на SELECT изявление. В случай, че изявление съдържа WHERE клауза, GROUP BY клаузата трябва да идва след WHERE клауза.

Следвайки GROUP BY клаузата е колона или списък с колони, разделени със запетая, използвани за определяне на групата.

SQLite GROUP BY примери

Използваме tracks таблица от примерната база данни за демонстрацията.

SQLite GROUP BY клауза с COUNT функция

Следното изявление връща идентификатора на албума и броя на песните на албум. Той използва GROUP BY клауза за групиране на песни по албум и прилага COUNT() функция за всяка група.

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Можете да използвате ORDER BY клауза за сортиране на групите, както следва:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql)

Опитайте го

SQLite GROUP BY и INNER JOIN клауза

Можете да заявите данни от множество таблици, като използвате INNER JOIN клауза, след което използвайте GROUP BY клауза за групиране на редове в набор от обобщени редове.

Например, следният оператор се присъединява към tracks таблица с albums таблица, за да получите заглавията на албума и използва GROUP BY клауза с COUNT функция за получаване на броя песни на албум.

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)

Опитайте го

SQLite GROUP BY с HAVING клауза

За да филтрирате групи, използвате GROUP BY с HAVING клауза. Например, за да получите албумите, които имат повече от 15 песни, използвате следното изявление:

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)

Опитайте го

SQLite GROUP BY клауза с SUM пример за функция

Можете да използвате SUM функция за изчисляване на общата сума за група. Например, за да получите обща дължина и байтове за всеки албум, използвате SUM функция за изчисляване на общите милисекунди и байтове.

SELECT
	albumid,
	SUM(milliseconds) length,
	SUM(bytes) size
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Опитайте го

SQLite GROUP BY с MAX , MIN и AVG функции

Следното изявление връща идентификатора на албума, заглавието на албума, максималната дължина, минималната дължина и средната дължина на песните в tracks таблица.

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)

Опитайте го

SQLite GROUP BY пример с множество колони

В предишния пример използвахме една колона в GROUP BY клауза. SQLite ви позволява да групирате редове по множество колони.

Например, за да групирате песни по тип и жанр на медия, използвате следното изявление:

SELECT
   MediaTypeId, 
   GenreId, 
   COUNT(TrackId)
FROM
   tracks
GROUP BY
   MediaTypeId, 
   GenreId;Code language: SQL (Structured Query Language) (sql)

Опитайте го

SQLite използва комбинацията от стойности на MediaTypeId и GenreId колони като група, напр. (1,1) и (1,2). След това прилага COUNT функция за връщане на броя на песните във всяка група.

SQLite GROUP BY пример за дата

Вижте следната таблица с фактури от примерната база данни:

Следното извлечение връща броя на фактурата по години.

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)

Ето изхода:

В този пример:

  • Функцията STRFTIME('%Y', InvoiceDate) връща година от низ от дата.
  • GROUP BY клаузата групира фактурите по години.
  • Функцията COUNT() връща броя на фактурата за всяка година (или група).

В този урок научихте как да използвате SQLite GROUP BY клауза за групиране на редове в набор от обобщени редове.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранявайте нова позиция на елементите RecyclerView в SQLite, след като бъдат плъзгани и пускани

  2. При метода за надграждане не се извиква в android sqlite

  3. ако моята таблица има 4 колони и искам да извлека 3-тата колона какво да правя.

  4. Как да използвате ROW_NUMBER в sqlite

  5. Как да инсталирате SQLite на macOS