PostgreSQL - 数值函数
PostgreSQL - 现代数值函数
Section titled “PostgreSQL - 现代数值函数”PostgreSQL 提供了一个丰富的数学和数值函数库,这对于数据分析、计算和操作至关重要。本教程将这些函数组织成逻辑组,并通过实际的现代示例演示它们的用法。
让我们使用一个示例 products 表进行演示:
CREATE TABLE products ( id SERIAL PRIMARY KEY, name TEXT, price NUMERIC(10, 2), stock_change INT, rating NUMERIC(3, 2));
INSERT INTO products (name, price, stock_change, rating) VALUES('Laptop', 1200.55, -10, 4.58),('Mouse', 25.00, 50, 4.20),('Keyboard', 75.99, 25, 4.66),('Webcam', 49.49, -5, 3.81);舍入和截断函数
Section titled “舍入和截断函数”这些函数用于调整数值的精度。
ROUND(n, d):将数字n舍入到d位小数。如果省略d,则舍入到最近的整数。CEIL(n)或CEILING(n):将数字n向上舍入到最近的整数。FLOOR(n):将数字n向下舍入到最近的整数。
SELECT name, price, ROUND(price) AS rounded_to_integer, ROUND(price, 1) AS rounded_to_one_decimal, CEIL(price) AS ceiling_price, FLOOR(price) AS floor_priceFROM products WHERE name = 'Laptop';结果:
name | price | rounded_to_integer | rounded_to_one_decimal | ceiling_price | floor_price--------+---------+--------------------+------------------------+---------------+------------- Laptop | 1200.55 | 1201 | 1200.6 | 1201 | 1200核心算术函数
Section titled “核心算术函数”ABS(n):返回n的绝对值(非负值)。MOD(a, b):返回a除以b的余数(取模运算符)。SQRT(n):返回n的平方根。POW(base, exp)或POWER(base, exp):返回base的exp次幂。
-- 获取库存变化的幅度SELECT name, stock_change, ABS(stock_change) AS absolute_change FROM products;
-- POWER 示例SELECT POWER(2, 8); -- 结果: 256
-- SQRT 示例SELECT SQRT(64); -- 结果: 8这些函数对于从参数列表中查找极端值非常有用。
GREATEST(val1, val2, ...):返回输入列表中的最大值。LEAST(val1, val2, ...):返回输入列表中的最小值。
-- 设想一个有基础价格和销售价格的场景。SELECT name, price AS original_price, LEAST(price * 0.8, 1000.00) AS sale_price -- 销售折扣为 8 折,售价上限为 $1000FROM products WHERE name = 'Laptop';结果:
name | original_price | sale_price--------+----------------+------------ Laptop | 1200.55 | 960.44三角函数和对数函数
Section titled “三角函数和对数函数”PostgreSQL 提供了一整套用于专业科学和工程计算的函数。请注意,三角函数以弧度为单位进行操作。
SIN(x)、COS(x)、TAN(x)ASIN(x)、ACOS(x)、ATAN(x)、ATAN2(y, x)COT(x)RADIANS(degrees):将度数转换为弧度。DEGREES(radians):将弧度转换为度数。
-- 计算 90 度的正弦值SELECT SIN(RADIANS(90)); -- 结果: 1LOG(n):自然对数(以 e 为底)。LOG(b, n):以b为底n的对数。EXP(n):指数函数(e 的 n 次幂)。
SELECT LOG(10, 100); -- 结果: 2其他有用函数
Section titled “其他有用函数”PI():返回圆周率 Pi (π) 的常数值。SIGN(n):如果n为负数,返回 -1;如果n为零,返回 0;如果n为正数,返回 1。
SELECT name, stock_change, SIGN(stock_change) AS direction FROM products;
-- 结果:-- name | stock_change | direction-- -----------+--------------+------------- Laptop | -10 | -1-- Mouse | 50 | 1-- Keyboard | 25 | 1-- Webcam | -5 | -1