SQLite 中的 ABS() 和 AVG()函数
1. ABS()函数:
ABS(X) 是一个数学函数,用于获取数字的绝对值。
句法 -
ABS(X)
ABS(X)函数采用数字参数 X 并返回其大小。
SELECT ABS(-6);
输出 -
6
如果参数 X 是 blob 或字符串,则函数给出 0.0 作为返回值
SELECT ABS('gfg');
输出 -
0.0
如果参数 X 为 NULL,则函数返回 NULL。
SELECT ABS(NULL);
输出 -
NULL
2. AVG()函数:
AVG(X) 是一个聚合函数,用于计算一组行的平均值。
句法 -
AVG(X)
该函数产生一个浮点值,等于参数组 X 中所有非空值的平均值。
SELECT AVG(1,2,3,4,5,6,7)
输出 -
4.0
如果有 NULL 值传递给 AVG()函数,则在计算平均值时仅使用非 NULL 值。
SELECT AVG(10,20,30,NULL);
输出 -
20.0
参数 X 中存在的字符串和 blob 被评估为 0。
SELECT AVG(10,20,'word',30,);
输出 -
20.0
如果所有输入值均为 NULL,则该函数返回 NULL。
SELECT AVG(NULL,NULL,NULL);
输出 -
NULL
现在,我们将使用一个真实的数据库示例。首先,让我们创建一个名为student的表,其中包含name和age列并插入一些行!
--create a table
CREATE TABLE students(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255),
age INT);
--insert multiple rows
INSERT INTO students(name,age)
VALUES
('Mark',20),
('Mary',19),
('John',17),
('Lydia',25);
然后我们将编写一个 SELECT 语句,使用 AVG()函数为我们提供所有学生的平均年龄
SELECT AVG(age) FROM students;
输出 -
20.25
接下来,我们将创建一个 SELECT 语句,该语句返回每个学生与 18 岁的新学生 Tony 之间的年龄差。
SELECT
name,
age,
ABS(age-18) AS age_difference_against_Tony
FROM students;
输出 -