问题标签 [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 回答
2054 浏览

sql-server-2008 - sql server 2008 中 percentile_cont 的替代方案

在 Oracle 中它运行良好......

oracle的查询如下

但是对于 SQL Server,我遇到了一个错误。这是 SQL Server 2008 的查询:

错误:无法正确解析选择。无法生成输出。

我知道它可以在 SQL Server 2012 中正常工作,但在 SQL Server 2008 中需要另一种方法

任何人都可以帮助............

0 投票
1 回答
1458 浏览

sql - Oracle - 使用 max() 重构子查询

我有下面的查询。SOFTWARE_DEVELOPMENT_CYCLE 有多行,但我对最新的感兴趣。

我想重写查询,以便不使用子查询。我用 DENSE_RANK LAST ORDERY BY 尝试过,但无济于事。

有人可以建议吗?谢谢你。

0 投票
1 回答
902 浏览

sql - 写在带分区的表上的 Oracle 查询优化

我在 Oracle 中有一张表,包含大约 5500 万条记录,并在日期列上进行了分区。

该表根据某个位置每天存储大约 600,000 条记录。

现在,在过程中的一个选择查询中使用了一些分析函数,例如前导、滞后、row_number() over(partition by col1, date order by col1, date ) 由于“partition by”和“order by”而花费了太多时间' 日期列上的子句。

还有其他方法可以优化查询吗?

0 投票
1 回答
46284 浏览

sql - SQL - ROW_NUMBER () OVER (ORDER BY) 不起作用

我在子句中放什么并不重要ORDER BY,结果集的顺序不会改变。

0 投票
2 回答
789 浏览

sql - Oracle 分析窗口

给定下表

和以下查询:

我得到这些结果:

预期的:

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

0 投票
1 回答
527 浏览

database - 如果没有 order by 子句,Oracle 中的 FIRST_VALUE() 函数如何处理行?

First_value() 定义声明它返回有序数据集中的第一个值。它的语法是

First_Value(ColumnName) over ( [Partition By Colum] [Order by Column] )

Partition By 和 Order By 是可选的。如果删除了 partition by,我们将得到整个集合的第一个值。

我的问题是,如果 Order By 被删除,我们会得到什么?oracle 是否隐含地对集合进行排序,或者只是给出一个随机的第一个值,或者给出第一个值以便插入数据?

0 投票
4 回答
297942 浏览

sql - Oracle 'Partition By' 和 'Row_Number' 关键字

我有一个由其他人编写的 SQL 查询,我正试图弄清楚它的作用。有人可以解释一下Partition ByandRow_Number关键字在这里的作用,并给出一个简单的例子,以及为什么要使用它?

分区示例:

我在网上看过一些例子,它们有点太深入了。

提前致谢!

0 投票
2 回答
235 浏览

sql - 使用分析函数选择具有 2 个日期列的记录的高性能查询

我正在寻找一种编写 SQL 查询的高性能方法。

我有一个包含列 ( id, fname, lname, accountid, creation_date, ) 的表,update_date我必须在该表中查找具有相同fname,并且最近日期基于的记录(注意可以为空)lnameaccountidgreatest(max(creation_date),max(update_date))update_date

我希望我需要使用分析函数

我有这些情况:

我想选择最后插入的:这条记录 (3,'a','a','2','07/01/2010 10:59:43','07/01/2010 10:59:43' )

我想在两列 (creation_date,update_date) 上选择最新的一个,即 (4,'b','a','2','07/01/201110:59:43',null)

我想在两列 (creation_date,update_date) 上选择最新的一个,即 (7,'c','g','4','07/01/2011 10:59:43',null)

我想在两列 (creation_date,update_date) 上选择最新的一个,即 (9,'k','t','2','07/01/2009 10:59:43','07/01 /2012 10:59:43')

0 投票
2 回答
3912 浏览

sql - 根据列值对行进行排名/计数

我有一些在这个 sqlfiddle 中描述的格式的数据:http ://sqlfiddle.com/#!4/b9cdf/2

基本上,一个带有用户 ID 和事件发生时间的表。我想做的是根据用户发生的时间来计算事件。所以,一个看起来像这样的表:

我希望它根据事件发生的顺序为事件分配一个数字等级。因此,这意味着上表将变为:

有没有办法在 Oracle SQL 中做到这一点?还是我必须将它吐出到脚本语言并从那里获取?

谢谢!

0 投票
1 回答
469 浏览

oracle - 使用分析函数删除查询

删除记录最少的记录,我有 2 个表 person (id, otherID) otherID 是其他 person.id 和电影 (id, country, personID) 的引用,其中 personID 是 person.id 的外键

我想删除电影表中与 personID 和 country 相关的记录最少的所有记录。例如:

我必须删除 Film(3, fr, 2) Person(1, 2 )->因为国家 fr, 2 中的人 1 的计数高于同一国家/地区的其他人 2 (otherID 列)的计数' fr',1.

Person(2, 2) 没有可删除的内容

Person(3, 2) 删除了 Film(3, fr, 2) 或 Film(4, fr, 3) 记录之一,因为两者都以 fr 作为国家并且 count = 1 但作为记录 Film(3, fr, 2)之前被删除,因此必须保留 Film(4, fr, 3)。

其中 count = select count(*) over (partition by film.personID, film.country) from film

并保持

实际上,对于 person 表中的每条记录,我们将查找:

a = select count(*) over (partition person.id,film.country)

b = select count(*) over (partition person.otherID,film.country)

a 和 b 相同的 film.country 然后删除具有 min(a,b) 的记录