跳至主要内容

精通 SQL ROUND:数据分析中的精度掌控

通过本教程学习如何使用 SQL ROUND 函数。内容涵盖 ROUND 函数在 Oracle、MySQL、PostgreSQL 和 SQL Server 中的实现。
· 10分钟 阅读

使用 AI 探索

处理数据时,精度至关重要。但作为数据科学家或数据工程师,您每天都在应对将数据转化为洞见的各种复杂性。

既然技能总有精进空间,您可以通过使用 SQL 的 `ROUND` 函数来提升数据处理能力与信心。

本指南旨在探讨 SQL `ROUND` 函数如何在分析中微调数据精度。

什么是 SQL ROUND?

ROUND 函数是 SQL 中用于调整数值数据精度的基础工具。它可将数值四舍五入到指定的小数位数,从而简化分析用的数据。

例如,使用 SQL ROUND,您可以将 3.14159 四舍五入为保留两位小数的 3.14。当无需严格精确、而近似值足以解释时,这尤其有用。

现在您已了解 SQL ROUND 是什么,接下来看看如何在不同数据库中实现它。

ROUND 语法

ROUND 函数很常见,但其语法在各数据库中并不完全一致。差异如下:

Oracle、MySQL 和 PostgreSQL 的语法

在这些数据库中,ROUND 采用简单的双参数格式:

ROUND(number, decimal_places)

其中:

  • Input 指您要进行四舍五入的数字。
  • Decimals 指定要保留的小数位数。

SQL Server 的语法

然而,SQL Server 在此格式上增加了变化——它有一个名为 function 的可选第三个参数:

ROUND(number, decimal_places [, function])

其中:

  • 前两个参数 input 和 decimals 的作用与其他数据库相同。
  • 可选的 function 参数在特定情况下指定舍入方向。

这种语法差异看似细微,但理解它至关重要,因为无论您使用何种数据库环境,它都有助于您正确应用 ROUND 函数。

SQL ROUND 函数的参数

ROUND 函数主要使用三个参数——input、decimals 和 operation。理解这些参数,您就能在 SQL 数据库中高效使用该函数。

Input 参数

Input 是您要进行四舍五入的数字。它可以是直接的数值、数据库列,或某个表达式的结果。

Decimal 参数

Decimal 参数控制将输入四舍五入到多少位小数。为正数时,按该小数位数进行四舍五入。

Function 参数

Function 参数是可选的。它决定当数值正好位于两个数的中间时的舍入方向。默认值为 0。任何其他值都会使函数执行截断(不四舍五入,直接截去)。

这些参数有助于实现对数字精确且可控的舍入。

在各类 SQL 数据库中使用 SQL ROUND 函数

您可以在多种 SQL 数据库中使用 ROUND。不过,根据数据库不同,其语法和行为可能略有差异。

以下是在几种最流行数据库中的用法:

在 Oracle 中实现

Oracle 中的 ROUND 既可用于数值数据,也可用于日期值。对数字使用时,会将其四舍五入到指定的小数位。

对于日期值,ROUND 可根据指定的格式将日期调整到最近的日、月、年等。

以下示例展示了它在 Oracle 中的用法:

假设您有如下 PRODUCTS 表。

image8.jpg

现在,若要将 standard_cost 列四舍五入到一位小数,可按如下方式查询。

SELECT Round(STANDARD_COST, 1) 
FROM PRODUCTS

舍入后的成本将如下所示。

image7.jpg

在 MySQL 中实现

在 MySQL 中,ROUND 同样用于将数字舍入到指定精度。

示例如下:

假设您有如下 purchase_details 表。

image16.jpg

现在,若要将 Paid_amount 列四舍五入到两位小数,可按如下方式查询。

SELECT Round(Paid_amount, 2) 
AS Result
FROM purchase_details

舍入后的金额将如下所示。

image3.jpg

在 PostgreSQL 中实现

PostgreSQL 对 ROUND 的实现也类似。以下是实现示例:

假设您有如下 reviews 表。

image14.jpg

现在,若要将 imdb_score 列四舍五入到 0 位小数,可按如下方式查询。

SELECT Round(imdb_score, 0) 
AS Result 
FROM cinema.reviews

舍入后的电影评分将如下所示。

image9.jpg

在 SQL Server 中实现

在 Microsoft SQL Server 中,ROUND 在处理数值时与 Oracle 的行为类似。

但 SQL Server 的一个独特之处在于其第三个参数 function,它允许用户指定是进行四舍五入(function = 0 或省略)还是进行截断(function = 1)。

以下示例展示了 SQL ROUND 在 SQL Server 中的用法:

假设您有如下 order_items 表。

image10.jpg

现在,若要将 list_price 列四舍五入到一位小数,可按如下方式查询。

SELECT Round(list_price, 1,0) 
AS Result 
FROM sales.order_items

舍入后的价格将如下所示。

image6.jpg

实践实现

了解参数后,就该在实践中使用 ROUND 函数了。下面看看在数据分析中如何对数字和日期进行处理。

将 ROUND 用于数字

假设您有一个名为 orderDetails 的表,其中包含一个带有多位小数的价格列。

image4.jpg

现在,若要将 Price 列四舍五入到一位小数,可按如下方式查询。

SELECT Round(Price, 1) 
AS Result
FROM orderDetails

此查询会将表中每个价格四舍五入到一位小数。

结果如下所示:

image2.jpg

将 ROUND 用于日期

在 SQL 中,您可以将日期值舍入到特定的组成部分,如年、月、时或分。

假设您有一个名为 orders 的表。

image5.jpg

现在,若要将 order_date 列舍入到最近的年份,可按如下方式查询:

SELECT YEAR(order_date) 
AS ROUNDED_DATE
FROM sales.orders

该查询会将列中的每个日期舍入(提取)到年份。

结果如下所示:

image15.jpg

SQL ROUND 进阶技巧

除了基础舍入外,SQL 的 ROUND 函数还可用于更高级的场景,例如:

  • SQL 向上取整
  • SQL 向下取整
  • 按特定区间舍入

其用法如下:

SQL 的向上取整与向下取整

尽管 ROUND 会四舍五入到最接近的值,但您可以通过 CEIL 与 FLOOR 实现特定方向的取整。

CEIL 会将任意小数向上取整到下一个整数。例如,请看:

您有一张名为 reviews 的表。

image13.jpg

如下将 CEIL 应用于 user_score 列。

Select CEIL(user_score) 
FROM reviews

您将得到如下结果:

image11.jpg

与 CEIL 相反,FLOOR 会将任意小数向下取整到最接近的整数。例如,请看这个例子。

如果将 FLOOR 应用于前述的 reviews 表,查询如下:

Select FLOOR(user_score) 
FROM reviews

您将得到如下结果:

image1.jpg

按特定区间舍入

有时,您需要按特定的区间进行舍入,如最接近的 5、10 或 100。为此,可将 ROUND 与除法和乘法结合使用。

假设您要将某个数字或列舍入到最接近的 10,可使用如下查询:

SELECT Round(number / 10) * 10
FROM table_name

此技巧有助于处理库存管理或统计分析中的问题,因为在这些场景下,将数据按特定区间分组更有意义。

与 SQL ROUND 类似的函数

除了 ROUND,SQL 中还有若干用于处理数字舍入与截断的函数。

CEIL 函数

CEILING(CEIL)函数将数字向上取整到最接近的整数或指定精度。与按最近值舍入的 ROUND 不同,CEILING 始终向上取整。

例如:CEILING(2.3) 返回 3。

当您需要确保取整结果不小于原值时,此函数尤为有用。

FLOOR 函数

FLOOR 函数将数字向下取整到最接近的整数或指定精度。

例如:FLOOR(2.7) 返回 2。

该函数确保取整结果不大于原值。

TRUNC 函数

TRUNC(截断)函数会移除数字的小数部分,向零方向截断。

例如:TRUNC(2.9) 将返回 2,而 TRUNC(-2.9) 将返回 -2。

TRUNC 会移除数字的小数部分,不一定进行四舍五入。

简而言之,CEILING、FLOOR 与 TRUNC 各有其在数据处理中的特定用途,能与 ROUND 形成互补。

借助这些函数,您可以在更广泛的场景中,以更高的精度并更契合数据语境地完成舍入任务。若想了解更多类似 SQL 技巧,请查看速查表并开始练习。

结论

把数据处理准确至关重要,而 SQL 的 ROUND 函数是确保数值易于处理的好方法。它能帮助您将数字四舍五入到所需的小数位,使数据更易理解。

如果您需要按特定方式取整,还可以使用 CEIL、FLOOR 和 TRUNC 等函数来实现。

无论您是初入门的数据从业者,还是希望打磨技能,SQL Fundamentals 与 Intermediate SQL 等课程都能提供帮助。

现在就把所学用于实践吧。祝您顺利!

Laiba Siddiqui

作者

Laiba Siddiqui

我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。

主题