SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite AVG

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.2Code 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan Kolom ke Tabel yang Ada di SQLite

  2. android.database.sqlite.SQLiteCantOpenDatabaseException:kesalahan tidak diketahui (kode 14):Tidak dapat membuka database

  3. Kapan saya harus menutup DatabaseHelper?

  4. Kalender dan Pengingat Kustom Android

  5. Pulihkan Database SQLite