问题标签 [oracle-analytics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6925 浏览

sql - Oracle 分析函数 - 使用 FIRST_VALUE 删除不需要的行

我相信 Oracle 函数 FIRST_VALUE 是我需要基于以下两个问题使用的: SQL - 如何选择具有最大值
Oracle 列的行:以最大日期记录

我有 3 个表代表与组织相关的人员。每个组织可能有一个父组织,其中 ORG.PARENT 是 ORG.ID 的外键(因此该表引用自身)。一个人可能与多个组相关联。

组织机构

PERSON_TO_ORG

我想列出一个人与之关联的组,所以我使用了这个查询:

...这给了我:

请注意 A-2 是如何出现两次的,因为它应该出现。但是,我不希望一个组出现两次。我希望一个组只出现在树中的最低级别,即最高级别的值。以下是我尝试使用 FIRST_VALUE 时没有运气的方法 - 我仍然让 A-2(和其他人)出现两次:

这似乎类似于 Pro Oracle SQL 中的 FIRST_VALUE 示例,但无论我如何调整参数,我似乎都无法使其工作。

如何仅返回给定组具有最高级别值的行(即树中最下方)?

0 投票
2 回答
789 浏览

sql - Oracle 分析窗口

给定下表

和以下查询:

我得到这些结果:

预期的:

为什么 RUNNING_BALANCE 以负数返回?除了明显的 abs() 之外,我怎么能做到这一点?

0 投票
1 回答
6499 浏览

oracle11g - 如何将 rank() 与内部连接一起使用?

我想将我的 CHEESE 表与 FRESHNESS 一起获取奶酪的 CHEESE 和 FRESHNESS 代码,其中每个奶酪 id 的 max(seq_no) 为 MOLD。

使用 rank() 时,我在哪里加入 FRESHNESS?

这是我用来获取所需序列号的代码。

0 投票
4 回答
6846 浏览

sql - 复制记录以填补日期之间的空白

我需要做一些非常奇怪的事情,那就是创建虚假记录以填补产品价格发布日期之间的空白。

实际上,我的情况比这要复杂一些,但我已经简化为产品/日期/价格。

假设我们有这张表:

有了这些记录:

选择记录将返回给我:

假设今天是 2012 年 4 月 21 日,我需要一个每天重复每个价格的视图,直到发布新价格。像这样:

任何想法如何做到这一点?我不能真正使用其他辅助表、触发器或 PL/SQL 编程,我真的需要使用视图来做到这一点。

我认为这可以使用 oracle 分析来完成,但我对此并不熟悉。我试图阅读这个http://www.club-oracle.com/articles/analytic-functions-i-introduction-164/但我根本没有明白。

0 投票
1 回答
206 浏览

sql - 使用 Oracle Analytics 改进复杂的 SQL 查询

我正在处理这个特别复杂的问题(至少对我来说,如果你是一个数学极客,不要评判我!)问题。

我基本上有两件事记录当前的库存水平,以及所有进出商店的库存变动清单。我试图将这两个部分结合起来,让我能够了解去年任何时候特定对象的库存水平。

SQL 的第一部分结合了特定商店中所有对象在过去一年中的所有库存变动和当前库存水平:

因此,这基本上返回了所有股票变动及其日期的列表,然后我在此语句中使用:

因此,在那之后,我遇到了一些我似乎无法解决的问题。

首先 - 在第二个语句中,它返回一个 365 天的列表,当天所选对象的移动以及它的历史库存水平,我似乎无法让对象 ID 出现在每一行中。

第二 - 我希望能够运行它,这样我就可以为每个对象获得 365 天的运动,以及当天对应的库存水平。我认为这必须包括比我目前拥有的对 Oracle 分析的更好理解。

任何帮助将不胜感激。

0 投票
1 回答
1372 浏览

sql - 用于分配付款的 Oracle SQL 查询

作为批处理的一部分,我正在尝试在多个发票交易中实现付款分配。发票和付款交易保存在同一张表中,充当交易登记簿。

所以例如。我们的交易登记表中有:

我正在寻找一个查询,该查询将为该用户支付 3500 的总付款,从第一张发票开始,将付款分配到每张发票并将其转储到新表中。

新表的最终结果如下。

我试图避免在 PL/SQL 块中使用循环。任何意见都非常感谢!

0 投票
5 回答
3607 浏览

sql - Sql (on Oracle) 天数老化报告

我需要帮助编写关于 Oracle 的老化报告。报告应该是这样的:

我可以为每个部分创建一个查询,然后合并所有结果,例如:

我想知道是否有更好的方法使用 oracle 分析函数或任何其他可以获得更好性能的查询?

样本数据:

0 投票
1 回答
498 浏览

oracle11g - SQL 分析函数:rank() over partition by not working property

现在我正在尝试按客户名称获得与我的分区相对应的不同等级

输出:

预期输出:

0 投票
2 回答
35 浏览

oracle - 使用 Oracle 分析函数从使用 max 的列中获取数据而不是另一列

我需要使用 max(timestamp) 为每个不同的帐户 (acc) 获取 bal 和 res 列之间的总和,看看这个:

我需要的是这样的MAX(timestamp) <= 1430238763sum: bal + res按 acc 分组:

我知道如何使用子查询来做到这一点,但我想尝试分析。

问候

0 投票
4 回答
781 浏览

sql - SQL中多行值的区别

我在 SQL 中的表是这样的: -

期望的输出:-

RN 1 的差值是从最近到第二次计算,然后从第二次到第三次计算

值1lag1 = 110-106 =4

值1lag2 = 106-103 = 3

value2lag1 = 210-205 = 5

value2lag2 = 205-201 = 4

其他RN也类似。

注意:对于每个 RN,有 3 行且只有 3 行。

我通过类似帖子的帮助尝试了几种方法,但没有运气。