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

oracle - 用分析函数替换 selfjoin

如何使用分析替换以下自联接:

0 投票
4 回答
2440 浏览

sql - “具有最大日期的行中的属性”的分析函数

我正在重构一位同事的代码,我有几种情况,他使用游标来获取“与某个谓词匹配的最新行”:

他的技术是将连接写成游标,按日期字段降序排列,打开游标,获取第一行,然后关闭游标。

这需要为驱动它的结果集的每一行调用一个游标,这对于许多行来说代价高昂。我更希望能够加入,但是比相关子查询更便宜:

我猜既然这是一个常见的需求,那么有一个 Oracle 分析功能可以做到这一点吗?

0 投票
2 回答
974 浏览

oracle - Oracle SELECT 查询:配对日期时折叠空值

我有以下 Oracle 查询:

这给了我如下数据:

我想要的是这样的数据:

也就是说,保留所有唯一的id/open_in对,并与它们最早open_out配对open_in。给定的 可以有任意数量的唯一open_in值,也可以有任意数量id的唯一open_out值。唯一的id/open_in可能没有匹配的open_out值,在这种情况下open_out应该是null该行。

我觉得一些分析功能,也许LAGLEAD,在这里会很有用。也许我需要MINPARTITION.

0 投票
3 回答
2480 浏览

sql - 如何为每个组选择固定数量的行?

这是mysql表中的一些示例数据

如何查询此表,以便随机选择每个距离 2 行?

一个成功的查询会产生类似

0 投票
2 回答
371 浏览

sql - 初学者 SQL 问题:在 Stack Exchange 数据资源管理器中查询金银标签徽章

我正在使用Stack Exchange Data Explorer来学习 SQL,但我认为该问题的基础知识适用于其他数据库。

我正在尝试查询该Badges表,根据 Stexdex(这就是我从现在开始将其称为)具有以下架构:

  • 徽章
    • ID
    • 用户身份
    • 姓名
    • 日期

这适用于具有独特名称的徽章[Epic][Legendary]但银色和金色标签特定的徽章似乎通过具有相同的确切名称混合在一起。

[mysql]这是我为标签编写的示例查询:

(略带注释的)输出是:如 stexdex 所示

这与撰写本文时的当前银牌金奖获得者名单是一致的,但用更永恒的术语来说,截至 2010 年 5 月,只有 2 位用户获得了金奖[mysql]:Quassnoi 和 Bill Karwin,证明了这一点在上面的结果中,他们的名字是唯一出现两次的名字。

所以这就是我理解它的方式:

  • 第一次Id出现(按时间顺序)是银色徽章
  • 第二次是为了金牌

现在,上述结果将白银和黄金条目混合在一起。我的问题是:

  • 这是一个典型的设计,还是有更友好的模式/规范化/无论你怎么称呼它?
  • 在当前的设计中,您将如何分别查询银色和金色徽章?
    • GROUP BY Id并以某种方式选择最小/最大或第一/第二Date
    • 您如何编写一个先列出所有银徽章然后列出所有金徽章的查询?
      • 还想象一下“真正的”查询可能更复杂,即不仅仅是按日期列出。
      • 您将如何编写它以使其在银子查询和金子查询之间没有太多重复?
    • 做两个完全独立的查询可能更典型吗?
    • 这个成语叫什么?行“分区”查询以将它们放入“桶”或其他东西?

需求说明

最初我想要以下输出,本质上是:

但是到目前为止,银和金的单独列的答案也很好,所以也可以随意追求这个角度。不过,我仍然很好奇你会怎么做。

0 投票
4 回答
1213 浏览

sql - 有趣的 Row_Number() 错误

我正在使用Stack Exchange 数据资源管理器并运行此查询:
https ://data.stackexchange.com/stackoverflow/query/2820/rising-stars-top-50-users-ordered-on-rep-per-day

请注意,在结果中,第 11 行和第 12 行具有相同的值,因此编号错误,即使 row_number() 函数采用与查询相同的参数顺序。

我知道这里的正确解决方法是在 order by 子句中指定一个额外的 tie-breaker 列,但我更好奇 row_number() 函数为什么/如何在相同数据上返回不同的结果?

如果它在任何地方都产生了影响,那么它可以在 Azure 上运行。

0 投票
2 回答
804 浏览

sql - 如何在 Sql Server Compact Edition SELECT 语句中复制 Rank 函数?

SQL Server Compact Edition 似乎不支持 RANK() 函数。(请参阅 http://msdn.microsoft.com/en-us/library/ms174077(SQL.90).aspx上的函数(SQL Server Compact Edition))。

如何在SQL Server Compact Edition SELECT 语句中复制 RANK() 函数。

(对于任何示例选择语句,请使用 Northwind.sdf,因为它是我可以使用 SQL Server 2005 Management Studio 打开的唯一一个。)

0 投票
2 回答
592 浏览

sql - 我如何找到每年排名前 N 的击球手?

我在 MySQL 实例中使用Lahman 棒球数据库。我想找到每年都在本垒打(HR)中名列前茅的球员。Batting 表的架构具有以下(相关部分):

对于每一年,每个玩家都有一个条目(每年数百到 12k,可以追溯到 1871 年)。一年内获得前 N 名击球手很容易:

但我有兴趣找到每年的前三名。我找到了这样的解决方案描述了如何从一个类别中选择顶部,我试图将它应用于我的问题,但最终得到一个永远不会返回的查询:

我哪里出错了?

0 投票
3 回答
3724 浏览

mysql - mysql:按ID分组,每个ID获得最高优先级

我有以下名为“pics”的 mysql 表,其中包含以下字段和示例数据:

是否有可能在单个查询中为每个vehicle_id 获取一行,并且该行是最高优先级?

我正在寻找的结果:

如果在单个查询中不可能,那么最好的方法是什么?

谢谢!

0 投票
3 回答
653 浏览

oracle - Oracle SELECT 查询:在为不同字段配对日期时折叠 NULL 值

这个问题和我之前的问题很像,但更复杂一些。 Rob van Wijk 的回答非常适合我的另一个问题,我一直以此为起点。我现在的问题是我正在为不同的字段旋转日期。之前我关心的是获取给定的所有值open_inopen_outid,现在我想要new_in, new_out, open_in, open_out, fixed_in, and fixed_outfor each id。我有以下内容:

这给了我如下数据:

我想要如下数据:

如何旋转数据以获取每个的日期配对id

编辑: 澄清一下,一个id可以多次进入和离开一个状态。例如,一个id可能从 New 到 Open 到 Fixed 到 Open 到 Fixed 到 Closed 。在这种情况下,需要有尽可能多的行来保存所有状态时间,例如: