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

SQLite AVG

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite AVG hàm để tính giá trị trung bình của một bộ giá trị.

Giới thiệu về hàm AVG của SQLite

AVG hàm là một hàm tổng hợp tính giá trị trung bình của tất cả các giá trị không phải NULL trong một nhóm.

Phần sau minh họa cú pháp của AVG chức năng:

AVG([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

Theo mặc định, AVG hàm sử dụng ALL cho dù bạn có chỉ định nó hay không. Nó có nghĩa là hàm AVG sẽ nhận tất cả các giá trị không phải NULL khi nó tính giá trị trung bình.

Trong trường hợp bạn muốn tính giá trị trung bình của các giá trị khác biệt (hoặc duy nhất), bạn cần chỉ định mệnh đề DISTINCT một cách rõ ràng trong biểu thức.

Nếu một cột lưu trữ các kiểu dữ liệu hỗn hợp như số nguyên, thực, BLOB và văn bản, thì SQLite AVG hàm diễn giải BLOB trông không giống một số là số không (0).

Giá trị của AVG hàm luôn là giá trị dấu phẩy động hoặc NULL giá trị. AVG hàm chỉ trả về một NULL giá trị nếu và chỉ khi tất cả các giá trị trong nhóm là NULL giá trị.

Bạn có thể thực hiện một bài kiểm tra nhanh để xem hàm SQLite hoạt động như thế nào với nhiều kiểu dữ liệu khác nhau.

Đầu tiên, tạo một bảng mới có tên avg_tests sử dụng câu lệnh sau:

CREATE TABLE avg_tests (val);Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Tiếp theo, chèn một số giá trị hỗn hợp vào avg_tests bảng.

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)

Hãy thử nó

Sau đó, truy vấn dữ liệu từ avg_tests bảng.

SELECT rowid,
       val
  FROM avg_tests;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Sau đó, bạn có thể sử dụng AVG hàm để tính giá trị trung bình của bốn hàng đầu tiên chỉ chứa các giá trị số.

SELECT
	avg(val)
FROM
	avg_tests
WHERE
	rowid < 5;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Cuối cùng, áp dụng AVG hàm cho tất cả các giá trị trong val cột của avg_tests bảng.

SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Bạn có 9 hàng trong avg_tests bàn. Hàng 7 là NULL . Do đó, khi tính giá trị trung bình, AVG hàm bỏ qua nó và tính toán 8 hàng.

Bốn hàng đầu tiên là số nguyên và giá trị thực:1,2, 10,1 và 20,5. Hàm AVG của SQLite sử dụng các giá trị đó trong phép tính.

Hàng thứ 5 và thứ 6 là kiểu văn bản vì chúng tôi đã chèn là ‘B’ và ‘8’. Bởi vì 8 trông giống như một số, do đó SQLite hiểu B là 0 và ‘8’ là 8.

Hàng thứ 8 và thứ 9 là BLOB các kiểu không giống số, do đó, SQLite diễn giải các giá trị này là 0.

AVG(cal) biểu thức sử dụng công thức sau:

AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2Code language: SQL (Structured Query Language) (sql)

Hãy xem cách DISTINCT mệnh đề hoạt động.

Đầu tiên, hãy chèn một hàng mới vào avg_tests bảng có giá trị đã tồn tại.

INSERT INTO avg_tests (val)
VALUES (10.1);Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Thứ hai, áp dụng AVG chức năng không có DISTINCT mệnh đề:

SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Thứ ba, thêm DISTINCT mệnh đề tới AVG chức năng:

SELECT
	avg(DISTINCT val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

avg_tests bảng có hai hàng có cùng giá trị 10.1, AVG(DISTINCT) chỉ lấy một hàng để tính toán. Do đó, bạn nhận được một kết quả khác.

SQLite AVG chức năng ví dụ thực tế

Chúng tôi sẽ sử dụng tracks trong cơ sở dữ liệu mẫu cho phần trình diễn.

Để tính độ dài trung bình của tất cả các bản nhạc theo mili giây, bạn sử dụng câu lệnh sau:

SELECT
	avg(milliseconds)
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

Hàm AVG của SQLite với GROUP BY mệnh đề

Để tính độ dài trung bình của các bản nhạc cho mọi album, bạn sử dụng AVG chức năng với GROUP BY mệnh đề.

Đầu tiên, GROUP BY mệnh đề nhóm một tập hợp các bản nhạc theo album. Sau đó, AVG hàm tính toán độ dài trung bình của các bản nhạc cho mỗi album.

Xem tuyên bố sau.

SELECT
	albumid,
	avg(milliseconds)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Hãy thử nó

SQLite AVG chức năng với INNER JOIN ví dụ mệnh đề

Để lấy tiêu đề album cùng với albumid , bạn sử dụng mệnh đề INNER JOIN trong câu lệnh trên giống như truy vấn sau:

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)

Hãy thử nó

Lưu ý rằng chúng tôi đã sử dụng ROUND hàm làm tròn giá trị động đến 2 chữ số ở bên phải dấu thập phân.

Hàm AVG trong SQLite với ví dụ mệnh đề HAVING

Bạn có thể sử dụng AVG chức năng hoặc bí danh của cột của nó trong mệnh đề HAVING để lọc các nhóm. Câu lệnh sau chỉ lấy các anbom có ​​độ dài trung bình từ 100000 đến 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)

Hãy thử nó

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách sử dụng SQLite AVG hàm để tính giá trị trung bình của các giá trị không phải NULL trong một nhóm.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.util.MissingFormatArgumentException:Định dạng chỉ định:s

  2. SQLite JSON_REPLACE ()

  3. SQLite Sum () so với Total ():Sự khác biệt là gì?

  4. Lựa chọn cơ sở dữ liệu để tạo hai bảng được kết nối?

  5. SQLite JSON_QUOTE ()