问题标签 [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.
sql-server-2008 - sql server 2008 中 percentile_cont 的替代方案
在 Oracle 中它运行良好......
oracle的查询如下
但是对于 SQL Server,我遇到了一个错误。这是 SQL Server 2008 的查询:
错误:无法正确解析选择。无法生成输出。
我知道它可以在 SQL Server 2012 中正常工作,但在 SQL Server 2008 中需要另一种方法
任何人都可以帮助............
sql - Oracle - 使用 max() 重构子查询
我有下面的查询。SOFTWARE_DEVELOPMENT_CYCLE 有多行,但我对最新的感兴趣。
我想重写查询,以便不使用子查询。我用 DENSE_RANK LAST ORDERY BY 尝试过,但无济于事。
有人可以建议吗?谢谢你。
sql - 写在带分区的表上的 Oracle 查询优化
我在 Oracle 中有一张表,包含大约 5500 万条记录,并在日期列上进行了分区。
该表根据某个位置每天存储大约 600,000 条记录。
现在,在过程中的一个选择查询中使用了一些分析函数,例如前导、滞后、row_number() over(partition by col1, date order by col1, date ) 由于“partition by”和“order by”而花费了太多时间' 日期列上的子句。
还有其他方法可以优化查询吗?
sql - SQL - ROW_NUMBER () OVER (ORDER BY) 不起作用
我在子句中放什么并不重要ORDER BY
,结果集的顺序不会改变。
sql - Oracle 分析窗口
给定下表
和以下查询:
我得到这些结果:
预期的:
为什么 RUNNING_BALANCE 以负数返回?除了明显的 abs() 之外,我怎么能做到这一点?
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 是否隐含地对集合进行排序,或者只是给出一个随机的第一个值,或者给出第一个值以便插入数据?
sql - Oracle 'Partition By' 和 'Row_Number' 关键字
我有一个由其他人编写的 SQL 查询,我正试图弄清楚它的作用。有人可以解释一下Partition By
andRow_Number
关键字在这里的作用,并给出一个简单的例子,以及为什么要使用它?
分区示例:
我在网上看过一些例子,它们有点太深入了。
提前致谢!
sql - 使用分析函数选择具有 2 个日期列的记录的高性能查询
我正在寻找一种编写 SQL 查询的高性能方法。
我有一个包含列 ( id
, fname
, lname
, accountid
, creation_date
, ) 的表,update_date
我必须在该表中查找具有相同fname
,并且最近日期基于的记录(注意可以为空)lname
accountid
greatest(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')
sql - 根据列值对行进行排名/计数
我有一些在这个 sqlfiddle 中描述的格式的数据:http ://sqlfiddle.com/#!4/b9cdf/2
基本上,一个带有用户 ID 和事件发生时间的表。我想做的是根据用户发生的时间来计算事件。所以,一个看起来像这样的表:
我希望它根据事件发生的顺序为事件分配一个数字等级。因此,这意味着上表将变为:
有没有办法在 Oracle SQL 中做到这一点?还是我必须将它吐出到脚本语言并从那里获取?
谢谢!
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) 的记录