Ringkasan :dalam tutorial ini, Anda akan mempelajari cara menggunakan AVG
SQLite berfungsi untuk menghitung nilai rata-rata dari sekumpulan nilai.
Pengantar fungsi SQLite AVG
AVG
fungsi adalah fungsi agregat yang menghitung nilai rata-rata dari semua nilai non-NULL dalam grup.
Berikut ini mengilustrasikan sintaks AVG
fungsi:
AVG([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Secara default, AVG
fungsi menggunakan ALL
klausa apakah Anda menentukannya atau tidak. Ini berarti fungsi AVG akan mengambil semua nilai non-NULL saat menghitung nilai rata-rata.
Jika Anda ingin menghitung nilai rata-rata dari nilai yang berbeda (atau unik), Anda perlu menentukan klausa DISTINCT secara eksplisit dalam ekspresi.
Jika kolom menyimpan tipe data campuran seperti integer, real, BLOB, dan teks, SQLite AVG
fungsi menafsirkan BLOB yang tidak terlihat seperti angka sebagai nol (0).
Nilai AVG
fungsi selalu berupa nilai floating point atau NULL
nilai. AVG
fungsi hanya mengembalikan NULL
nilai jika dan hanya jika semua nilai dalam grup adalah NULL
nilai.
Anda dapat mengambil tes cepat untuk melihat bagaimana fungsi SQLite bekerja dengan berbagai tipe data.
Pertama, buat tabel baru bernama avg_tests
menggunakan pernyataan berikut:
CREATE TABLE avg_tests (val);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Selanjutnya, masukkan beberapa nilai campuran ke dalam avg_tests
tabel.
INSERT INTO avg_tests (val)
VALUES
(1),
(2),
(10.1),
(20.5),
('8'),
('B'),
(NULL),
(x'0010'),
(x'0011');
Code language: SQL (Structured Query Language) (sql)
Cobalah
Kemudian, kueri data dari avg_tests
tabel.
SELECT rowid,
val
FROM avg_tests;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Setelah itu, Anda dapat menggunakan AVG
berfungsi untuk menghitung rata-rata dari empat baris pertama yang hanya berisi nilai numerik.
SELECT
avg(val)
FROM
avg_tests
WHERE
rowid < 5;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Terakhir, terapkan AVG
fungsi ke semua nilai dalam val
kolom avg_tests
tabel.
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Anda memiliki 9 baris di avg_tests
meja. Baris 7 adalah NULL
. Oleh karena itu, saat menghitung rata-rata, AVG
fungsi mengabaikannya dan memasukkan 8 baris ke dalam perhitungan.
Empat baris pertama adalah bilangan bulat dan nilai real:1,2, 10.1, dan 20.5. Fungsi SQLite AVG menggunakan nilai tersebut dalam penghitungan.
Baris ke-5 dan ke-6 adalah jenis teks karena kami memasukkan sebagai 'B' dan '8'. Karena 8 terlihat seperti angka, maka SQLite menafsirkan B sebagai 0 dan '8' sebagai 8.
Baris ke-8 dan ke-9 adalah BLOB
jenis yang tidak terlihat seperti angka, oleh karena itu, SQLite menafsirkan nilai-nilai ini sebagai 0.
AVG(cal)
ekspresi menggunakan rumus berikut:
AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2
Code language: SQL (Structured Query Language) (sql)
Mari kita lihat bagaimana DISTINCT
klausa berfungsi.
Pertama, masukkan baris baru ke dalam avg_tests
tabel dengan nilai yang sudah ada.
INSERT INTO avg_tests (val)
VALUES (10.1);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Kedua, terapkan AVG
fungsi tanpa DISTINCT
klausa:
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Ketiga, tambahkan DISTINCT
klausa ke AVG
fungsi:
SELECT
avg(DISTINCT val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Karena avg_tests
tabel memiliki dua baris dengan nilai yang sama 10.1, AVG(DISTINCT)
hanya membutuhkan satu baris untuk perhitungan. Oleh karena itu, Anda mendapatkan hasil yang berbeda.
SQLite AVG
fungsi contoh praktis
Kami akan menggunakan tracks
tabel dalam database sampel untuk demonstrasi.
Untuk menghitung panjang rata-rata semua trek dalam milidetik, gunakan pernyataan berikut:
SELECT
avg(milliseconds)
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Fungsi SQLite AVG dengan GROUP BY
klausa
Untuk menghitung rata-rata panjang trek untuk setiap album, gunakan AVG
berfungsi dengan GROUP BY
klausa.
Pertama, GROUP BY
klausa mengelompokkan satu set trek berdasarkan album. Kemudian, AVG
fungsi menghitung panjang rata-rata trek untuk setiap album.
Lihat pernyataan berikut.
SELECT
albumid,
avg(milliseconds)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite AVG
fungsi dengan INNER JOIN
contoh klausa
Untuk mendapatkan judul album bersama dengan albumid
kolom, Anda menggunakan klausa INNER JOIN dalam pernyataan di atas seperti kueri berikut:
SELECT
tracks.AlbumId,
Title,
round(avg(Milliseconds), 2) avg_length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Perhatikan bahwa kami menggunakan ROUND
berfungsi untuk membulatkan nilai mengambang menjadi 2 digit di sebelah kanan koma desimal.
Fungsi SQLite AVG dengan contoh klausa HAVING
Anda dapat menggunakan AVG
fungsi atau alias kolomnya dalam klausa HAVING untuk memfilter grup. Pernyataan berikut hanya mendapatkan album yang rata-rata panjangnya antara 100000 dan 200000.
SELECT
tracks.albumid,
title,
round(avg(milliseconds),2) avg_leng
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid
HAVING
avg_leng BETWEEN 100000 AND 200000;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Dalam tutorial ini, kami telah menunjukkan kepada Anda cara menggunakan AVG
SQLite berfungsi untuk menghitung nilai rata-rata dari nilai non-NULL dalam sebuah grup.