Ringkasan :dalam tutorial ini, Anda akan mempelajari cara menggunakan SQLite GROUP BY
klausa untuk membuat sekumpulan baris ringkasan dari sekumpulan baris.
Pengantar SQLite GROUP BY
klausa
GROUP BY
klausa adalah klausa opsional dari SELECT
penyataan. GROUP BY
klausa sekelompok baris yang dipilih menjadi baris ringkasan dengan nilai satu atau lebih kolom.
GROUP BY
klausa mengembalikan satu baris untuk setiap grup. Untuk setiap grup, Anda dapat menerapkan fungsi agregat seperti MIN
, MAX
, SUM
, COUNT
, atau AVG
untuk memberikan lebih banyak informasi tentang setiap grup.
Pernyataan berikut menggambarkan sintaks dari SQLite GROUP BY
klausa.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql)
Cobalah
GROUP BY
klausa muncul setelah FROM
klausa dari SELECT
penyataan. Jika pernyataan berisi WHERE
klausa, GROUP BY
klausa harus muncul setelah WHERE
klausa.
Mengikuti GROUP BY
klausa adalah kolom atau daftar kolom yang dipisahkan koma yang digunakan untuk menentukan grup.
SQLite GROUP BY
contoh
Kami menggunakan tracks
tabel dari database sampel untuk demonstrasi.
SQLite GROUP BY
klausa dengan COUNT
fungsi
Pernyataan berikut mengembalikan id album dan jumlah trek per album. Ini menggunakan GROUP BY
klausa untuk mengelompokkan trek berdasarkan album dan menerapkan COUNT()
fungsi untuk setiap grup.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Anda dapat menggunakan ORDER BY
klausa untuk mengurutkan grup sebagai berikut:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite GROUP BY
dan INNER JOIN
klausa
Anda dapat meminta data dari beberapa tabel menggunakan INNER JOIN
klausa, lalu gunakan GROUP BY
klausa untuk mengelompokkan baris ke dalam kumpulan baris ringkasan.
Misalnya, pernyataan berikut bergabung dengan tracks
tabel dengan albums
tabel untuk mendapatkan judul album dan menggunakan GROUP BY
klausa dengan COUNT
berfungsi untuk mendapatkan jumlah track per 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)
Cobalah
SQLite GROUP BY
dengan HAVING
klausa
Untuk memfilter grup, gunakan GROUP BY
dengan HAVING
ayat. Misalnya, untuk mendapatkan album yang memiliki lebih dari 15 lagu, gunakan pernyataan berikut:
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)
Cobalah
SQLite GROUP BY
klausa dengan SUM
contoh fungsi
Anda dapat menggunakan SUM
berfungsi untuk menghitung total per grup. Misalnya, untuk mendapatkan total panjang dan byte untuk setiap album, Anda menggunakan SUM
berfungsi untuk menghitung total milidetik dan byte.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite GROUP BY
dengan MAX
, MIN
, dan AVG
fungsi
Pernyataan berikut mengembalikan id album, judul album, panjang maksimum, panjang minimum, dan panjang rata-rata trek di tracks
tabel.
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)
Cobalah
SQLite GROUP BY
contoh beberapa kolom
Pada contoh sebelumnya, kita telah menggunakan satu kolom di GROUP BY
ayat. SQLite memungkinkan Anda untuk mengelompokkan baris menurut beberapa kolom.
Misalnya, untuk mengelompokkan trek menurut jenis dan genre media, Anda menggunakan pernyataan berikut:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite menggunakan kombinasi nilai MediaTypeId
dan GenreId
kolom sebagai grup misalnya, (1,1) dan (1,2). Kemudian menerapkan COUNT
berfungsi untuk mengembalikan jumlah trek di setiap grup.
SQLite GROUP BY
contoh tanggal
Lihat tabel faktur berikut dari database sampel:
Pernyataan berikut mengembalikan jumlah faktur menurut tahun.
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)
Berikut adalah outputnya:
Dalam contoh ini:
- Fungsi
STRFTIME('%Y', InvoiceDate)
mengembalikan satu tahun dari string tanggal. GROUP BY
klausa mengelompokkan faktur menurut tahun.- Fungsi
COUNT()
mengembalikan jumlah faktur di setiap tahun (atau grup).
Dalam tutorial ini, Anda telah belajar bagaimana menggunakan SQLite GROUP BY
klausa untuk mengelompokkan baris ke dalam kumpulan baris ringkasan.