实用数学函数
ABS、MOD、POWER 等函数
实用数学函数 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。
数学函数为何重要
SQL 不仅用于存储和检索文本,也是一种强大的数值计算工具。内置数学函数让您无需离开查询,就能计算绝对值、余数、幂等结果。
在本课中,您将学习 SQL 中最有用的数值函数:ABS、MOD、POWER、SQRT、ROUND、CEIL、FLOOR 和 SIGN。
ABS — 绝对值
ABS(n) 返回一个数的绝对值(非负值)。负数会变为正数,正数和零保持不变。
当您关心的是距离零点的距离而不是方向时,这个函数非常方便——例如,计算温度距离目标值有多远,而不论温度高于还是低于目标值。
SELECT ABS(-42), -- 42
ABS(15), -- 15
ABS(0); -- 0在实际查询中使用 ABS
请设想有一个 transactions 表,其中的提款金额以负数存储。您可以使用 ABS,让每笔金额无论方向如何都以正数显示。
CREATE TABLE transactions (
id INTEGER,
amount NUMERIC
);
INSERT INTO transactions VALUES (1, 200.00), (2, -50.00), (3, -120.00), (4, 80.00);
SELECT id,
amount,
ABS(amount) AS absolute_amount
FROM transactions;MOD — 除法后的余数
MOD(dividend, divisor) 返回第一个数除以第二个数时得到的余数。它相当于许多编程语言中的 % 运算符。
一个经典用法是检查数字为偶数还是奇数:如果 MOD(n, 2) = 0,该数字就是偶数,否则就是奇数。
SELECT MOD(10, 3), -- 1 (10 = 3*3 + 1)
MOD(15, 5), -- 0 (15 = 5*3 + 0)
MOD(7, 2); -- 1 (odd number)在实际查询中使用 MOD
您可以在 WHERE 子句中使用 MOD 来筛选行。这里我们只选择 id 为偶数的订单。
CREATE TABLE orders (
id INTEGER,
total NUMERIC
);
INSERT INTO orders VALUES (1, 99.99), (2, 45.00), (3, 130.50), (4, 22.00), (5, 75.00), (6, 60.00);
SELECT id, total
FROM orders
WHERE MOD(id, 2) = 0;POWER — 乘方
POWER(base, exponent) 将一个数提升到给定的幂。POWER(2, 10) 得到 1024,而 POWER(9, 0.5) 得到 3(即 9 的平方根)。
这个函数适用于复利计算、面积公式,以及任何涉及指数增长的场景。
SELECT POWER(2, 10), -- 1024
POWER(3, 3), -- 27
POWER(9, 0.5); -- 3 (square root)SQRT — 平方根
SQRT(n) 是 POWER(n, 0.5) 的便捷简写。它返回一个非负数的平方根。
例如,如果您存储了正方形土地的面积,就可以使用 SQRT(area) 求出边长。
SELECT SQRT(25), -- 5
SQRT(2), -- 1.4142...
SQRT(100); -- 10ROUND — 四舍五入到 N 位小数
ROUND(n, d) 将 n 四舍五入到 d 位小数。如果省略 d(或传入 0),结果就是整数。d 为负数时,会对小数点左侧的位数进行四舍五入。
SELECT ROUND(3.14159, 2), -- 3.14
ROUND(2.555, 2), -- 2.56
ROUND(1234.5, -2), -- 1200
ROUND(9.9); -- 10CEIL 和 FLOOR — 始终向上或向下取整
CEIL(n)(也写作 CEILING)始终向上取整到最近的整数,而 FLOOR(n) 始终向下取整。
当您需要某个数量的最小值时使用 CEIL(例如打印这些行所需的页数),当您需要不超过某个值的最大整数时使用 FLOOR(例如已经完整经过的周数)。
SELECT CEIL(4.1), -- 5
CEIL(-4.1), -- -4
FLOOR(4.9), -- 4
FLOOR(-4.9); -- -5SIGN — 数字的方向是什么
如果数字为正,SIGN(n) 返回 1;如果为负,返回 -1;如果为零,返回 0。无需编写 CASE 表达式,它就能快速对数值进行分类。
SELECT SIGN(42), -- 1
SIGN(-7), -- -1
SIGN(0); -- 0组合使用数学函数
数学函数可以在同一个表达式中自由组合。下面的示例结合使用 ROUND 和 POWER,计算一笔普通贷款的月供,展示这些函数如何在实际业务逻辑中相互配合。
-- Monthly payment formula: P * r / (1 - (1+r)^-n)
-- P=10000, annual rate 6% (r=0.005/month), n=24 months
SELECT ROUND(
10000.0 * 0.005 / (1 - POWER(1 + 0.005, -24)),
2
) AS monthly_payment;快速检查
测试您对 SQL 数学函数的理解。
课程回顾
做得很好!以下是您在本课中学习的 SQL 数学函数总结:
- ABS(n) — 绝对值(去除符号)
- MOD(a, b) — a 除以 b 后的余数
- POWER(base, exp) — 将一个数提升到某个幂
- SQRT(n) — 平方根
- ROUND(n, d) — 四舍五入到 d 位小数
- CEIL(n) — 始终向上取整到下一个整数
- FLOOR(n) — 始终向下取整到前一个整数
- SIGN(n) — 根据数字的符号返回 1、-1 或 0
这些函数适用于所有主流 SQL 数据库,也可以嵌套或组合使用,直接在查询中处理复杂的数值逻辑。
常见问题解答
「实用数学函数」课时是免费的吗?
是的 — 「实用数学函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。
「实用数学函数」这节课中我会学到什么?
ABS、MOD、POWER 等函数 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 SQL Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「实用数学函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 SQL Academy 课中编写并运行代码吗?
能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。