Oracle 运行乘法

2023-12-04

我们都知道如何生成运行总计列

SELECT id, date, value, sum(value) 
 OVER (partition by id order by date) total 
 FROM dual 
 ORDER BY date

这会给我类似的东西

ID      DATE    VALUE    TOTAL
1       1/1/14  0.001    0.001
2       2/1/14  0.003    0.004
3       3/1/14  0.002    0.006

现在我想生成一个“运行乘法”,生成 0.001 * 0.004 * 0.006。我知道如果我只想要整个乘法的值可以通过类似的方法来完成

SELECT exp(sum(ln(value))) from dual

但这个方法不适用于oracle中的分区。也许有人有想法?

Edit

期望的结果是(不要介意数字,它们只是虚拟的,它们不会遇到溢出)。

ID      DATE    VALUE    TOTAL
1       1/1/14  0.001    0.001
2       2/1/14  0.003    0,000004
3       3/1/14  0.002    0,000000024

The exp(sum(ln()))只要您添加分析,该方法就有效sum()部分,不适合exp()。这将为您提供原始值的乘积:

WITH t AS (
  SELECT 1 AS id, DATE '2014-01-01' AS dat, 0.001 AS value FROM dual
  UNION ALL SELECT 2, DATE '2014-01-02', 0.003 FROM dual
  UNION ALL SELECT 3, DATE '2014-01-03', 0.002 FROM dual
)
SELECT id, dat, value, EXP(SUM(LN(value))
  OVER (PARTITION BY null ORDER BY dat))
  AS total 
FROM t
ORDER BY dat;

        ID DAT            VALUE      TOTAL
---------- --------- ---------- ----------
         1 01-JAN-14       .001       .001 
         2 02-JAN-14       .003    .000003 
         3 03-JAN-14       .002 .000000006 

这将为您提供运行总计的乘积:

WITH t AS (
  SELECT 1 AS id, DATE '2014-01-01' AS dat, 0.001 AS value FROM dual
  UNION ALL SELECT 2, DATE '2014-01-02', 0.003 FROM dual
  UNION ALL SELECT 3, DATE '2014-01-03', 0.002 FROM dual
),
u AS (
  SELECT id, dat, value, SUM(value) 
    OVER (PARTITION BY null ORDER BY dat) AS total 
  FROM t
)
SELECT id, dat, value, total, EXP(SUM(LN(total))
  OVER (PARTITION BY null ORDER BY dat)) AS product
FROM u
ORDER BY dat;

        ID DAT            VALUE      TOTAL    PRODUCT
---------- --------- ---------- ---------- ----------
         1 01-JAN-14       .001       .001       .001 
         2 02-JAN-14       .003       .004    .000004 
         3 03-JAN-14       .002       .006 .000000024 

显然使用你自己的表而不是 CTE;如果您尝试使用 ID 获取多个值的乘积/总和,请将其更改为partition by id. Using null是让这个与您的示例数据一起工作。

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

Oracle 运行乘法 的相关文章

  • 在 SQLite GROUP BY 查询的 SELECT 列表中包含额外的列是否安全?

    我有一个简单的 SQLite 表 名为 message sequence INTEGER PRIMARY KEY type TEXT content TEXT 我想获取每种类型的最后一条消息的内容 由其序列确定 令我惊讶的是 以下简单查询有
  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • 我应该对表进行分区/子分区吗?

    Case 系统有dispositives 基本上由id type name 我可能有N个dispositives 我有一张桌子来存放log of all dispositives 这是系统中最大的表 现在统计100英里记录 The log表
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • 使用 START WITH 和 CONNECT BY PRIOR 将查询从 oracle 迁移到 postgresql

    我正在将一个进程从 oracle 迁移到 postgresql 并且在它们的转换方面遇到了另一个问题 我一直在研究如何迁移oracle查询 它有 START WITH 和 CONNECT BY PRIOR 我已经对此进行了记录 我认为最简单
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • 创建触发器

    如何启动触发器 以便在未付余额超过 50 美元的情况下无人能够租借电影 这里有一个跨行表约束 即你不能只放置一个 OracleCONSTRAINT在列上 因为它们一次只能查看一行中的数据 Oracle 仅支持两种跨 行约束类型 唯一性 例如
  • 从 blob 反序列化 java 对象

    首先 我很抱歉 我要问一些愚蠢的问题 我根本不懂java 也不知道我们是否可以问这样的问题 如果没有 删除我的主题 oracle中有一个存储blob的表 它是二进制的 我能够解码它 输出看起来像这样 sr com epam insure c
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 在 JSP 中迭代列表对象

    我正在做一个项目来尝试自学 spring 和 struts 我目前卡在 JSP 页面上 我有一个 pojo 类 其中包含带有 getter setter 的变量 eid 和 ename 我还有一个 sql 中的表 其具有相同的值和六个填充行
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • 找出会话的默认 SQL Server 架构

    我需要知道正在执行某些 DDL 的 SQL 脚本中当前的默认架构是什么 我不需要设置架构 但我确实需要将对它的引用 名称或 ID 放入变量中 该脚本可能以 Windows 登录身份运行 因此以下内容还不够 SELECT name defau
  • 使用聚合函数时减少 Athena 扫描的数据量

    以下查询扫描 100 MB 的数据 select from table where column1 val and partition id 20190309 然而 下面的查询扫描了 15 GB 的数据 有超过 90 个分区 select
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • 从 Google Assistant 启动我的应用程序(如果有)

    要求是如果用户命令 GA 启动我的 Android 应用程序查找附近的麦当劳餐厅其中 McDonald 是应用程序名称 由于用户没有提及他 她想要在 McDonald 应用程序中进行搜索 因此应用程序无法使用定义的意图过滤器来处理明确的意图
  • NSTimer 不会失效

    我在使计时器失效时遇到问题 property nonatomic strong NSTimer timer 在成功的块内 我在主线程上分配和设置计时器 dispatch async dispatch get main queue self
  • Mongoose(或 MongoDB)中的 TransientTransactionError 是什么?

    I have server js and db js The db js文件使用 Mongoose 与我的数据库交互 我使用server js从中调用函数db js var mongoose require mongoose mongoos
  • Cassandra Datastax 驱动程序在访问器上设置分页状态

    我正在使用 Datastax 可爱的 cassandra java 驱动程序 我试图将所有查询字符串封装到内置访问器中以进行映射 但我需要能够设置查询的分页状态 我发现这可以通过普通的语句 SimpleStatement 实现 但我还没有找
  • 如何以Google方式隐藏库源代码?

    例如 我有一个library我想保护源代码不被查看 我想到的第一个方法是为私有函数创建公共包装器 如下所示 function executeMyCoolFunction param1 param2 param3 return execute
  • 如何在xslt中提取这种格式

    我有一个 xml 结构
  • Bash 故障排除:不是有效的标识符

    初学者试图让管道在 bash 中工作 如果有人能明白为什么当我运行以下命令时我会得到 bash i not a valid identifier 这真的很有帮助 另外如果还有其他错误请告诉我 for i in home regionstex
  • Postgres 9.4 Django 1.9 获取所有 json 键

    我在 django 模型中有一个 JSONField 如下所示 from django db import models from django contrib postgres fields import JSONField class
  • JBoss / HotSpot JVM 崩溃

    我们有一个基于 Jboss 构建的 Web 应用程序 已经投入生产多年 在过去的 18 个月里 它从未下降过 然而 最近两天 jvm崩溃了4次 当 JVM 崩溃时 我们会收到一份我正在努力解读的错误报告 我看过其他几个崩溃报告 在这个网站和
  • Keras 中的自定义损失函数

    我正在研究一种图像类增量分类器方法 使用 CNN 作为特征提取器和全连接块进行分类 首先 我对 VGG 训练网络进行了微调以完成新任务 一旦网络针对新任务进行了训练 我就会为每个类别存储一些示例 以避免忘记新类别何时可用 当某些类可用时 我
  • 从类路径资源文件夹获取文件列表? [复制]

    这个问题在这里已经有答案了 我正在尝试从资源文件夹设置 JFX ImageView 图像 但似乎无法获得不会引发异常的适当 URL 字符串文件路径 var x getRandomImageFromPackage pictures toStr
  • 声明通用项数组时,如何允许推断通用参数?

    我遇到的情况是 我有一系列通用项目 Item 并且在项目本身内 我希望推断和具体的通用参数 也就是说 我想要一组通用项目 但每个项目都可以有不同的通用类型 应该保留这一点 type Item
  • Python 套接字。 OSError: [Errno 9] 错误的文件描述符

    这是我的客户 CLIENT import socket conne socket socket socket AF INET socket SOCK STREAM conne setsockopt socket SOL SOCKET soc
  • 我在 addCase 中指定什么“类型”来返回列?

    我正在尝试使用 case 语句进行查询 但无法弄清楚如何让 case 返回列值而不是常量 我的查询工作得很好 除了我为结果提供的列名被 Cake 或者 PDO 引用或错误处理在我无法挖掘的层中的某处 我已经了解了bindValue 但是我一
  • 在 Spark UDF 中操作数据帧

    我有一个 UDF 可以从数据帧中过滤和选择值 但它遇到 对象不可序列化 错误 详细信息如下 假设我有一个数据框 df1 其中包含名称为 ID Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 的列 Y10 我想根据另一个数据帧 df2
  • 如何制作圆角椭圆形按钮?

    我的目标是让我的按钮看起来像这样 减去按钮周围的黑边 阅读了很多帖子后 我看到大多数解决方案都说使用 layer cornerRadius 10 0 当我这样做时 我得到这个 它使边缘变圆 但没有给我我想要的目标 有什么建议吗 Swift
  • 新窗口中的高图表

    我使用 highcharts 在我的页面中显示图表 它工作正常 但有时图表中的数据过于 压缩 所以我应该找到一种方法以更大的尺寸查看图表 我在互联网上阅读了几篇关于这个主题的文章 一般来说 他们建议使用 highslide 但我不想这样做
  • Android Studio:创建横向布局

    直到最近我才使用 Eclipse 在 Eclipse 中我只是创建了一个文件夹 res layout landscape 并将备用横向布局放入其中 然而 在Android Studio 1 1 0中 我似乎不能这样做 如何创建备用横向布局的
  • 具有动态项目大小的 C++ 向量

    C STL 向量具有许多不错的属性 但只有在运行时已知每个项目的大小时才有效 我想要一个在运行时具有动态项目大小的向量类 背景 我的项目由整数和双精度序列组成 仅在运行时已知的序列 在运行时为向量指定每个项目的大小就足够了 我知道可能的解决
  • Oracle 运行乘法

    我们都知道如何生成运行总计列 SELECT id date value sum value OVER partition by id order by date total FROM dual ORDER BY date 这会给我类似的东西