SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Cách hoạt động của SQLite Avg ()

SQLite avg() hàm trả về giá trị trung bình của tất cả các giá trị không phải NULL trong một nhóm.

Nó chấp nhận một đối số, đó là giá trị hoặc nhóm giá trị.

Ví dụ

Lấy bảng sau:

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     

Chúng ta có thể sử dụng avg() để nhận giá trị trung bình từ Giá cột. Như thế này:

SELECT avg(Price) FROM Products;

Kết quả:

184.555

Mệnh đề WHERE ảnh hưởng đến kết quả như thế nào

Nếu truy vấn của bạn sử dụng WHERE , giá trị trung bình sẽ được tính sau WHERE điều khoản đã có ảnh hưởng. Nói cách khác, bạn có thể sử dụng WHERE để đảm bảo rằng avg() hàm chỉ tính những hàng mà bạn quan tâm.

Đây là điều sẽ xảy ra nếu tôi thêm WHERE mệnh đề cho ví dụ trước.

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

Kết quả:

206.073333333333

Làm tròn kết quả

Kết quả được trả về dưới dạng giá trị dấu phẩy động (trừ khi nó là NULL). Bạn có thể sử dụng round() hàm để làm tròn giá trị theo yêu cầu.

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

Kết quả:

206.07

Giới hạn kết quả

LIMIT mệnh đề không ảnh hưởng đến việc tính toán avg() hàm - chỉ một hàng được trả về với avg() vẫn hoạt động.

SELECT avg(Price) 
FROM Products
LIMIT 1;

Kết quả:

184.555

Điều đó nói rằng, việc cung cấp giới hạn bằng 0 sẽ dẫn đến không có gì được trả lại.

Chuỗi và BLOB

Các giá trị chuỗi và BLOB không giống số được hiểu là 0.

SELECT avg(ProductName) FROM Products;

Kết quả:

0.0

Đối số NULL

Nếu không có đầu vào không phải NULL, hàm avg () trả về NULL.

SELECT avg(NULL);

Kết quả:

 

(Kết quả đó là NULL).

Tuy nhiên, nếu có ít nhất một đối số không phải NULL thì đối số đó sẽ không trả về NULL.

Để chứng minh điều này, ở đây tôi sẽ chèn một hàng mới nhưng để nguyên Giá cột tại NULL:

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

Kết quả:

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                       

Vì vậy, hàng cuối cùng không có giá - Giá cột là NULL.

Bây giờ khi tôi sử dụng avg() , nó vẫn trả về giá trị trung bình của tất cả các hàng không phải NULL.

SELECT avg(Price) FROM Products;

Kết quả:

184.555

Từ khóa DISTINCT

Bạn có thể sử dụng DISTINCT từ khóa để chỉ tính giá trị trung bình của các giá trị riêng biệt trong cột. Điều này có tác dụng loại bỏ mọi giá trị trùng lặp khỏi phép tính.

Xem Chỉnh sửa kết quả trung bình () của bạn trong SQLite với Từ khóa DISTINCT để làm ví dụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thêm số hàng trống cụ thể trong sqlite?

  2. Cách tính toán sự khác biệt giữa hai ngày trong SQLite

  3. Xóa mục khỏi ListView và Cơ sở dữ liệu bằng OnItemClickListener

  4. SQLite GLOB

  5. Phương thức onUpgrade có bao giờ được gọi không?