You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中实现Excel的MRound逻辑以得到指定输出?

在SQL中实现Excel的MRound逻辑(以50000为倍数)

先明确需求:将Column1的数值四舍五入到50000的最接近整数倍,对应示例结果如下:

Column1result
248111250000
217811200000
354594350000
230950250000

Excel的MRound(number, multiple)核心逻辑是:返回与目标数值最接近的指定倍数的数值;若数值到两个倍数的距离相等,则取偶数倍(示例未涉及该场景)。下面针对主流SQL数据库给出实现方案:

通用核心思路

所有数据库的实现都基于同一个逻辑:先将原数值除以目标倍数,对结果四舍五入后再乘以倍数,公式抽象为:

ROUND(Column1 / 50000, 0) * 50000 AS result

1. MySQL / MariaDB

MySQL的ROUND()默认采用四舍五入规则,直接套用公式即可:

SELECT 
    Column1,
    ROUND(Column1 / 50000, 0) * 50000 AS result
FROM your_table;

2. SQL Server

需将倍数写成浮点型(50000.0)避免整数除法截断,语法如下:

SELECT 
    Column1,
    ROUND(Column1 / 50000.0, 0) * 50000 AS result
FROM your_table;

3. PostgreSQL

通过::numeric强制转换为数值类型,确保除法精度:

SELECT 
    Column1,
    ROUND(Column1::numeric / 50000, 0) * 50000 AS result
FROM your_table;

4. Oracle

直接使用ROUND()函数即可,无需额外处理:

SELECT 
    Column1,
    ROUND(Column1 / 50000, 0) * 50000 AS result
FROM your_table;

示例结果验证

代入示例数值测试上述SQL,完全符合需求:

  • 248111 ÷ 50000 = 4.96222 → 四舍五入为5 → 5 × 50000 = 250000
  • 217811 ÷ 50000 = 4.35622 → 四舍五入为4 → 4 × 50000 = 200000
  • 354594 ÷ 50000 = 7.09188 → 四舍五入为7 → 7 × 50000 = 350000
  • 230950 ÷ 50000 = 4.619 → 四舍五入为5 → 5 × 50000 = 250000

特殊场景处理(可选)

若遇到数值与两个倍数距离相等的情况(比如225000,到200000和250000的距离均为25000),Excel的MRound会返回偶数倍(200000,因为4是偶数)。以SQL Server为例,可通过CASE语句实现:

SELECT 
    Column1,
    CASE 
        WHEN MOD(Column1, 50000) = 25000 THEN 
            CASE WHEN FLOOR(Column1 / 50000.0) % 2 = 0 
                 THEN FLOOR(Column1 / 50000.0) * 50000 
                 ELSE CEILING(Column1 / 50000.0) * 50000 
            END
        ELSE ROUND(Column1 / 50000.0, 0) * 50000
    END AS result
FROM your_table;

日常使用中,若无需处理这类场景,通用公式足够满足需求。

内容的提问来源于stack exchange,提问作者Manoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:52:19