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

Bagaimana SQLite Avg() Bekerja

SQLite avg() fungsi mengembalikan nilai rata-rata dari semua nilai non-NULL dalam grup.

Ia menerima satu argumen, yang merupakan nilai atau kelompok nilai.

Contoh

Ambil tabel berikut:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     

Kita dapat menggunakan avg() berfungsi untuk mendapatkan nilai rata-rata dari Harga kolom. Seperti ini:

SELECT avg(Price) FROM Products;

Hasil:

184.555

Bagaimana Klausa WHERE Mempengaruhi Hasil

Jika kueri Anda menggunakan WHERE klausa, rata-rata akan dihitung setelah WHERE klausa telah terpengaruh. Dengan kata lain, Anda dapat menggunakan WHERE klausa untuk memastikan bahwa avg() fungsi menghitung hanya baris yang Anda minati.

Inilah yang terjadi jika saya menambahkan WHERE klausa ke contoh sebelumnya.

SELECT avg(Price) 
FROM Products
WHERE ProductName LIKE '%widget%';

Hasil:

206.073333333333

Membulatkan Hasil

Hasilnya dikembalikan sebagai nilai floating point (kecuali NULL). Anda dapat menggunakan round() berfungsi untuk membulatkan nilai sesuai kebutuhan.

SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';

Hasil:

206.07

Membatasi Hasil

LIMIT klausa tidak mempengaruhi perhitungan avg() fungsi – hanya satu baris yang dikembalikan dengan avg() tetap berfungsi.

SELECT avg(Price) 
FROM Products
LIMIT 1;

Hasil:

184.555

Meskipun demikian, memberikan batas nol tidak akan menghasilkan apa pun.

String dan BLOB

Nilai string dan BLOB yang tidak terlihat seperti angka diinterpretasikan sebagai 0.

SELECT avg(ProductName) FROM Products;

Hasil:

0.0

Argumen NULL

Jika tidak ada input non-NULL, fungsi avg() mengembalikan NULL.

SELECT avg(NULL);

Hasil:

 

(Hasilnya adalah NULL).

Namun, jika setidaknya ada satu argumen non-NULL, maka argumen tersebut tidak akan mengembalikan NULL.

Untuk mendemonstrasikannya, di sini saya akan menyisipkan baris baru, tetapi biarkan Harga kolom di NULL:

INSERT INTO Products (ProductId, ProductName) 
VALUES (5, 'Red Widget');
SELECT * FROM Products;

Hasil:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     
5           Red Widget                       

Jadi baris terakhir tidak memiliki harga – Harga kolom adalah NULL.

Sekarang ketika saya menggunakan avg() fungsi, masih mengembalikan rata-rata semua baris non-NULL.

SELECT avg(Price) FROM Products;

Hasil:

184.555

Kata Kunci YANG BERBEDA

Anda dapat menggunakan DISTINCT kata kunci untuk menghitung rata-rata hanya nilai yang berbeda di kolom. Ini memiliki efek menghapus nilai duplikat dari perhitungan.

Lihat Tweak Hasil Avg() Anda dalam SQLite dengan Kata Kunci DISTINCT sebagai contoh.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghasilkan Angka Acak dalam Rentang Tertentu di SQLite

  2. Aplikasi berhenti bekerja karena database

  3. Cara mengimpor Perpustakaan Persistensi Kamar ke proyek Android

  4. SQLite - Pernyataan GABUNG

  5. SQLite - Perbarui Data