MySQL ABS Function

摘要:在本教程中,您将学习如何使用 MySQL ABS()函数返回数字的绝对值。

MySQL ABS()函数概述

ABS()函数是一个返回数字的绝对(正)值的数学函数。

下面显示了ABS()函数的语法:

ABS(n)
Code language: SQL (Structured Query Language) (sql)

在此语法中,n 是文字数字或计算结果为数字的表达式。如果 n 为负数,则ABS()函数将负值更改为正值。如果 n 为零或正数, ABS()函数不起作用。

返回值的数据类型与输入参数的数据类型相同。

下图说明了ABS()函数:

MySQL ABS Function Illustration

MySQL ABS()函数示例

以下示例显示了对四个不同数字使用ABS()函数的结果:

SELECT 
    ABS(-10), 
    ABS(0), 
    ABS(10);  
Code language: SQL (Structured Query Language) (sql)

这是查询输出:

MySQL ABS Function Example

在表列上使用 ABS 函数

我们将使用products表进行演示:

products table

以下查询查找产品代码、建议零售价以及产品建议零售价与其产品系列内产品平均建议零售价的偏差。

SELECT 
    productName, 
    productLine,
    msrp,
    ABS(
        ROUND(
            msrp - AVG(msrp) OVER (
                PARTITION BY productLine
            )
        )
    ) deviation
FROM
    products
ORDER BY 
    productName;
Code language: SQL (Structured Query Language) (sql)

这是输出:

MySQL ABS Function deviation example

我们来分解一下偏差列的计算。

首先, AVG()窗口函数返回其产品线中每个产品的平均建议零售价:

AVG(msrp) OVER ( PARTITION BY productLine )
Code language: SQL (Structured Query Language) (sql)

其次,以下公式返回建议零售价与平均产品线建议零售价之间的差异:

msrp - AVG(msrp) OVER (PARTITION BY productLine)
Code language: SQL (Structured Query Language) (sql)

第三, ROUND()函数将偏差四舍五入到小数点零。

ROUND(
     msrp - AVG(msrp) OVER (
        PARTITION BY productLine
       )
)
Code language: SQL (Structured Query Language) (sql)

第四,由于部分产品的建议零售价低于平均建议零售价,因此与平均值的偏差为负。 ABS()函数应用于所有偏差以返回绝对值。

在本教程中,您学习了如何使用 MySQL ABS()函数来获取数字的绝对值。

本教程有帮助吗?