Oracle SQL - 回合 - 半场

2023-12-07

Oracle ROUND 函数默认“向上舍入”:

select 3.674 my_number,
       round(3.674,2) round_on_number
from   dual
union
select 3.675 my_number,
       round(3.675,2) round_on_number
from   dual
union
select 3.676 my_number,
       round(3.676,2) round_on_number
from   dual
;

 MY_NUMBER ROUND_ON_NUMBER
---------- ---------------
     3,674            3,67
     3,675            3,68
     3,676            3,68

我需要四舍五入“一半”,这本质上意味着我应该得到以下结果:

 MY_NUMBER EXPECTED_ROUND_ON_NUMBER
---------- ------------------------
     3,674                     3,67
     3,675                     3,67
     3,676                     3,68

它应该很快,因为我需要对数百万个项目执行此操作。

我可能可以检测到数字是否以“5”结尾,并在这种情况下截断最后一位数字,否则四舍五入,但我感觉这效率很低(?)

谢谢 ! 大卫


文档向您展示所使用的算法:

  1. 如果 n 为 0,则无论整数如何,ROUND 始终返回 0。
  2. 如果 n 为负数,则 ROUND(n, 整数) 返回 -ROUND(-n, 整数)。
  3. 如果 n 为正数,则
    ROUND(n, integer) = FLOOR(n * POWER(10, integer) + 0.5) * POWER(10, -integer)

所以你可以修改正的非零版本:

FLOOR(n * POWER(10, integer) + 0.4) * POWER(10, -integer)
                                 ^

例如对于固定舍入,暂时忽略零/负数:

with t (my_number) as (
  select 3.674 from dual
  union all select 3.675 from dual
  union all select 3.676 from dual
)
select my_number,
  floor(my_number * power(10, 2) + 0.4) * power(10, -2) as round_on_number
from  t;

 MY_NUMBER ROUND_ON_NUMBER
---------- ---------------
     3.674            3.67
     3.675            3.67
     3.676            3.68

您可以通过 case 表达式包含零/负数;或者编写自己的函数来更整齐地处理它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle SQL - 回合 - 半场 的相关文章

  • ClassCastException:java.util.Date 无法转换为 java.sql.Date

    你好 我的代码抛出了ClassCastException StackTrace 显示 java lang ClassCastException java util Date cannot be cast to java sql Date a
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • 从表中删除孤儿

    我正在尝试清理一张有很多孤立项目的桌子 我通过查找空值来检查是否与另一个表存在关系来解决此问题 DELETE FROM table1 LEFT JOIN table2 ON table1 ID table2 ID WHERE table2
  • 将两行中相似的列数据合并到一行中

    我的查询结果具有以下特征 LIDCode Total Domain Region VSE Version AB02 15 GLOBAL CANLA 0 6943 AB02 5925 CENTRE STREET SW 31 GLOBAL CA
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • postgres 有 CLOSEST 运算符吗?

    我正在寻找这样的东西 给定一个表格 id number 1 7 2 1 25 3 1 01 4 3 0 查询SELECT FROM my table WHEREnumberCLOSEST 1 将返回第 3 行 我只关心数字 现在我有一个程序
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方

随机推荐

  • UIButton 中图像下的标签

    我正在尝试创建一个按钮 该按钮在图标下方有一些文本 有点像应用程序按钮 但它似乎很难实现 任何想法如何让文本显示below图像与UIButton 或者您可以只使用此类别 ObjC interface UIButton VerticalLay
  • 如何解决“react-native start”错误

    我刚刚安装了 node js 和 cli 安装了node js 安装了react native cli npm g react native cli 并创建了一个 新项目 react native init new project 在 ne
  • 使用 jQuery 将三个重复的 div 组合并为一个

    我这里还有另一个问题 我有几个重复的 div 组 一组有3个不同班级的分区 我需要做的是将其包装到一个 容器 中 当我使用wrapAll时 它会将所有内容包装到一个div中 这是我的 html div class bb box tl div
  • 使用jquery ajax将javascript对象转为php

    我有一个数组或一个 javascript 对象 我创建如下 arr arr length obj其中 obj 是一个经典的 JSON 字符串 例如 id 1 So arr似乎是一个 JavaScript 对象数组 我可以这样访问它 arr
  • 无法使用自定义适配器理解 NullPointerException

    我正在尝试创建一个列表视图 它作为可以显示 html 内容的 TextView WebView 和其他基本 TextView 我尝试扩展 SimpleAdapter 但我遇到了这个问题 如果有人能指出我正在做的错误 我会很高兴 在onCre
  • 从BackgroundWorker内的剪贴板获取数据

    我有一个后台工作者 在 DoWork 方法中我有以下内容 var clipboardData Application Current Dispatcher Invoke new Action gt Clipboard GetData Dat
  • 如何将操作栏选项卡向右对齐?

    我以编程方式添加了操作栏选项卡 我不知道如何将操作栏选项卡向右对齐 ActionBar bar getActionBar bar setNavigationMode ActionBar NAVIGATION MODE TABS instan
  • Google Apps 脚本中的 Cookie 处理 - 如何在标头中发送 Cookie?

    我正在尝试编写一个简单的脚本 从网页中获取文本并处理该字符串 但是 该网站要求我登录 我成功登录该网站 这是我登录的方式 var payload name1 val1 name2 val2 var opt payload payload m
  • 如何格式化 Winform 中 LostFocus 事件的所有文本框值

    我需要在失去焦点事件时向任何相关文本框值中每个数值的千位添加逗号 我创建了以下函数 public static void FormatNumerical this Control control if control is TextBox
  • 递归函数的复杂性 - 时间和空间

    我有兴趣知道如何计算递归函数的时间和空间复杂度 如排列 斐波那契 描述here 一般来说 我们可以在很多地方进行递归 而不仅仅是排列或递归 所以我正在寻找通常遵循的方法来计算时间和空间复杂度 谢谢 看一眼http www cs duke e
  • 带有 if 语句的函数中的全局变量

    好吧 我目前正在做一个用 python 制作二十一点游戏的项目 但遇到了一些麻烦 我的问题之一是我不知道何时将变量定义为全局变量 特别是在带有 if 语句的函数中 如果我在 if 语句之外有一个全局变量 我是否必须声明该变量在 if 语句内
  • 使用“import __main__”是个好习惯吗?

    我正在开发一个相对较大的 Python 应用程序 并且我希望将一些资源保留为可在多个不同模块中访问的全局变量 这些值包括版本号 版本日期 全局配置和一些资源的静态路径 我还包括了一个DEBUG由命令行选项设置的标志 以便我可以在调试模式下运
  • 需要有关流程的帮助

    当我开始像这样的过程时process Runtime getRuntime exec gnome terminal 它启动 shell 执行 我想停止 shell 执行并想从进程重定向 I O 有人能告诉我如何做到这一点吗 我的代码是 pu
  • 从 MFC 应用程序连接到 SQL Server Compact Edition (.sdf)

    我正在 Visual Studio 2008 中构建一个对纹理进行分类的 MFC 应用程序 我需要某种轻量级数据库来保存特征 只是一些双精度和字符串 这些特征可以是 在不同的计算机上携带该应用程序 能够从应用程序对其执行查询 搜索 更新 插
  • Cygwin 看到一个 Windows 看不到的文件——我想从 python 访问这个文件

    我有一个连接到 USB 的设备 它创建一个名为 Tpolling log 的日志文件 我可以通过 Cygwin 看到它 但通过 Windows 看不到它 隐藏文件设置为始终显示 我也无法从 python 访问它 我希望能够在 python
  • 在 GWT Web 应用程序中调用外部应用程序(即 Windows 计算器)

    当用户单击 GWT Web 应用程序中的按钮时 我尝试调用外部 Windows 应用程序 即 calc exe 有没有办法如何做到这一点 以下是我迄今为止已经尝试过的 1 尝试了 Runtime exec 和 ProcessBuilder
  • 使用 OpenMP 进行缩减:线性合并或日志(线程数)合并

    我有一个关于 OpenMP 缩减的一般性问题 这个问题困扰了我一段时间 我的问题是关于将部分金额合并到归约中 它可以线性地完成 也可以作为线程数的对数完成 假设我想减少一些功能double foo int i 有了 OpenMP 我就可以这
  • 是否可以覆盖表单助手?

    使用文档 我可以为我的字段的布局设置自己的助手 但我也想个性化游戏给出的一些字段 主要原因是 Twitter Bootstrap 2 我需要更改 在 checkbox scala html 中 input field args id nam
  • ReplayKit:从未进入 startRecording() 完成处理程序

    问题描述 尽管显示了 允许在 AppName 中进行屏幕录制 弹出窗口 但永远不会输入 startRecording 完成处理程序 偶尔会出现 允许在 AppName 中进行屏幕录制 弹出窗口 当我删除应用程序 重新启动设备并对项目进行清理
  • Oracle SQL - 回合 - 半场

    Oracle ROUND 函数默认 向上舍入 select 3 674 my number round 3 674 2 round on number from dual union select 3 675 my number round