问题标签 [analytic-functions]

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 投票
2 回答
17222 浏览

sql - 获取与 Oracle 中的最大和最小行相关的值

在 Oracle 11g 中,我们需要能够查询表以从特定组中具有最高和最低值的行中提取信息。例如使用 EMP 表,我们想找到每个部门中薪水最高的人的姓名和薪水最低的人的姓名

(如果有两个或更多员工的薪水最高或最低,我们希望始终按字母顺序返回第一个)。

上一篇文章讨论了如何仅获取最大值而不是最大值和最小值的值。

基于上面的链接,我们目前有一个不整洁的解决方案,然后应用后续查询,但性能对我们很重要。我预测一个好的解决方案还需要分析函数,并且可能需要一个枢轴来将多行合并为单行。

非常感谢任何帮助!理查德

0 投票
1 回答
951 浏览

sql - SQL 分析函数 - 如何为分区分配编号?

我正在使用甲骨文。

假设我有一个包含这个样本的表格,随机的,内容:

我想有一个视图,其中我对 columnA 中的每个值都有一个唯一的编号,并在 columnA 具有该值的行内记录编号。

基于上述示例数据的想要的结果:

我可以record_numberrow_number() over (partition by columnA order by columnB asc).

如何获得group_numberwhich 实际上是 old 的友好排序别名columnA

谢谢你。

0 投票
3 回答
5090 浏览

sql - 从 PARTITION BY 子句中删除 ORDER BY 子句?

有没有办法可以减少下面内部查询的 OVER 部分中的“ORDER BY lro_pid”子句的影响?

我不在乎在分区中排序这个结果,因为我想完全按不同的变量排序。lro_pid 是一个索引列,但这似乎仍然像目前一样浪费资源。(也许有一种方法可以将排序限制在单行的范围内??希望根本不会花费时间/精力在分区内进行排序)

0 投票
3 回答
35866 浏览

sql - Oracle中的分组依据与分区依据

我正在编写一个查询以从 Oracle 仓库中获取记录。它是一个简单的选择查询,在几个表上连接,我有几个列要聚合。因此,我最终在其余列上使用 Groupby。

假设我选择了 10 列,其中 5 列是聚合列。所以我需要按其他 5 列分组。我什至可以通过不执行 Groupby 并在我想要派生的每个聚合列上使用 over (partition by) 子句来实现相同的目的。

我不确定哪个更适合仓库或一般情况。

0 投票
3 回答
15560 浏览

sql-server - 用结果集系列中的最新非 NULL 值替换 NULL 值(SQL Server 2008 R2)

对于 SQL Server 2008 R2

我有一个看起来像这样的结果集(注意 [price] 是数字,下面的 NULL 表示 NULL 值,结果集按 product_id 和时间戳排序)

我想将其转换为(基本上)从最新的前一行复制非空值的结果集,以生成如下所示的结果集:

我没有找到任何允许我执行此操作的聚合/窗口函数(同样,这仅适用于 SQL Server 2008 R2。)

我希望找到一个为我做这件事的分析聚合函数,比如......

但我似乎没有找到任何方法在窗口中执行“累积最新非空值”(将窗口绑定到前面的行,而不是整个分区)

除了创建表值用户定义函数之外,是否有任何内置函数可以完成此操作?


更新:

显然,此功能在“Denali”CTP 中可用,但在 SQL Server 2008 R2 中不可用。

LAST_VALUE http://msdn.microsoft.com/en-us/library/hh231517%28v=SQL.110%29.aspx

我只是希望它在 SQL Server 2008 中可用。它在 Oracle 中可用(至少从 10gR2 开始),我可以在 MySQL 5.1 中使用局部变量做类似的事情。

http://download.oracle.com/docs/cd/E14072_01/server.112/e10592/functions083.htm

0 投票
0 回答
186 浏览

java - 语法分析和解析器

我想解析类似的东西:

变量路径

“path”和“to”是名为“Instance”的对象,变量引用了一个double。

我有以下语法:

在这个语法中:

  • INSTANCE_SEPARATOR 是“。” 字符。
  • SHORTCUT 是一个仅包含“path”、“to”或“variable”之类的字母的名称。
  • expr 必须返回通过调用函数 getDouble 获得的双精度值,该函数采用名称(此处为“变量”)。此函数使用当前选定的实例。一个实例包含一个包含双精度或其他实例的哈希表。
  • pushInstance 是一个设置当前实例的函数

例如我们可以有:

  • 包含哈希表的实例“路径”:“to”=>链接到实例“to”
  • 一个实例“to”,其中包含一个哈希表:“variable”=>10
  • 路径“path.to.variable”必须返回 10。

这不会运行,因为语法抱怨空值。这是因为解析器这样做:

)

而不是做

为什么 ?有优先级问题吗?

最后,如果我删除 instancePath 规则,所有运行:

我无法删除这些额外的规则,因为我已经简化了示例,但实际上它要复杂得多。

我不明白为什么删除这个额外的规则可以解决我的问题......

0 投票
2 回答
1637 浏览

sql - 如何使用 Oracle SQL 计算当前变量的中位数?

我正在使用 Oracle SQL 中的发票数据。我想创建一个变量“迄今为止的中位数帐户发票金额”,它给出了截至给定发票日期的帐户的中位数发票金额。

0 投票
2 回答
869 浏览

sql - SQL 中的事务活动运行总计

我正在使用事务表。我想生成一些变量来确定同一客户在过去 5 分钟和 30 分钟以及 1、2、3 和 4 小时以及 1、2、5 和 10 天内执行的交易数量。在事务表中生成此类列的有效方法是什么?-- 解决方案将是一个运行总计,直到每个事务时间。我可以使用 Oracle 和其他 SQL 变体。

0 投票
3 回答
13433 浏览

oracle - Oracle 分析:在计算中使用 LAG 值?

我有一张记录任务完成时间的表格。任务属于工作流,但在此示例中,我只是想让 LAG 正常工作。

我想查找有关每项任务需要多长时间的信息。

我试过了:

但这会导致错误。有没有办法计算当前行和上一行之间的差异?

0 投票
3 回答
5942 浏览

sql - 如何使用 oracle SQL 执行线性插值?

我正在尝试使用 Oracle 11g(开发中的 11.1,生产中的 11.2)进行数值分析,特别是对具有三列感兴趣的表的线性插值:时间戳、设备 ID 和值。

值列保存来自设备的数据(id 为 deviceid),在时间戳中给定的时间获取。例如,这是伪造的数据,但它给出了这样的想法:

来自设备 001 的时间戳与设备 002 的时间戳不匹配,但我需要将设备 001 和 002 的值放在一行中,并带有一个时间戳,与设备 001 的时间戳匹配。我想要结束的是像这样的东西:

其中设备 002 的值是基于设备 002 的值在设备 001 的每个时间戳两侧的两个最接近的时间戳处收集的值进行线性插值的。发生空值是因为我在设备 002 的任一侧都没有两个时间戳01:00:00.000,我不想推断这个值。

据我了解,我可以使用 percentile_cont 来做到这一点,但我不明白我在网上看到的例子。例如, percentile_cont 使用的百分位数来自哪里?

在此先感谢您的帮助!