问题标签 [top-n]
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 - 显示在 oracle 11g R2 中得分最高的学生的详细信息
目标
我有一张学生桌。我需要显示详细信息,即。name
在考试中获得最高分的学生。
表的定义
以下是表定义的代码:(我使用来自http://www.sqlfiddle.comtext to ddl
的选项创建了它)
我插入的一些记录:
请帮助我完成将实现此目的的查询。
http://www.sqlfiddle.com上的规范oracle 11g R2
在 Windows 机器上。
sql - 查找每个位置的前 3 名用户
我对 SQL 相当陌生,正在解决一些实践问题。我有一个示例 Twitter 数据库,我试图根据关注者的数量在每个位置找到前 3 名用户。
这是我正在使用的表格:
我已经能够通过以下方式找到“顶级”用户:
我能够想出解决这个问题的唯一方法是找出“Top 1st”、“Top 2nd”、“Top 3rd”,然后union
将它们组合起来。这是正确/唯一的方法吗?或者,还有更好的方法?
sql - 需要oracle查询
我正在练习 Oracle 子查询..(我是 Oracle 的新手。)
问题:找到每个部门中收入最高的员工?
我下面的查询有效(但我觉得它不是很好,即使我得到了正确的结果)
还有其他简单的方法吗?(使用内部连接或其他方式?)
我也想知道:我们究竟什么时候必须使用内连接而不是使用子查询?我们究竟什么时候必须使用子查询而不是内连接?
sql - 更新oracle sql中的倒数第二个记录
我有 3 个主键。公司名称、雇员编号、开始日期。
我想创建一个存储过程,它可以让我只更新每个 empno 的倒数第二个记录。我怎样才能做到这一点?在这种情况下,我必须按 empnno 记录,但我只想更新倒数第二个记录,而不管记录的数量是多少;如果我有 100 条记录,我想更新同一 empno 的第 99 条记录。
在这种情况下,我只想在 FinalDate 中编辑倒数第二个。这些;
sql - 获取每组名称的最高值
我以下表为例:
Job 字段只是文本,Runtime 是一个整数值我如何为按 JOB 的前两个字母分组的那些选择最大的运行时作业,但将作业保留在另一列中?
我能够执行以下查询,但是我不知道该运行时的作业全名是什么
这是针对应该在 Oracle 10/11g 中运行的查询
sql - 选择最有经验的人
我必须制作一个篮球运动员表和一个查询,以找到我尝试过的最有经验的球员
但我假设那是错误的。
所以基本上我想找经验最高的玩家(数据类型设置为INT)
谢谢!!:D
sql - TSQL 上的 select 语句中的前 1 个案例
我在这个查询上有问题。我怎样才能解决这个问题:
我收到此错误:
关键字“top”附近的语法不正确。
有什么建议么?
sql - SQL Server select max(id) given other conditions in where clause
We have a database table with structure as such:
The nature of the table is that some NPIs are in the table twice or N times.
We are trying to select the most recent NPI (that with the max id) given the other parameters.
I could do a
But this does not bring in the other info such as city/state.
I'd like to do something like this:
but this only returns 1 row of course, the most recent NPI that is from that city.
How do I return all records from that city but only the most recent NPI?
sql-server-2008 - 如何选择存储在另一个表中的对象的一个图像
SQL 表中的产品表:
我想在产品的选择查询中选择一个图像我需要 product1 的第一张/最后一张图像、product2 的第一张/最后一张图像等
就像是:
performance - 尽管 STOPKEY 优化,top-N 查询做太多工作
这会很长,所以这里有一个快速的总结来吸引你:我的 top-N 查询在它COUNT STOPKEY
的ORDER BY STOPKEY
计划中仍然很慢,没有充分的理由。
现在,细节。它从一个缓慢的功能开始。在现实生活中,它涉及使用正则表达式的字符串操作。出于演示目的,这里有一个故意愚蠢的递归斐波那契算法。我发现它对于高达 25 左右的输入非常快,在 30 左右慢,在 35 左右很荒谬。
现在一些输入:名称和数字的列表。
下面是一个慢速查询的例子:使用慢速斐波那契函数来选择 num 生成一个双位数斐波那契数的行。
这对于 11 和 33 来说是正确的,所以Bravo
和Charlie
在输出中。运行大约需要 5 秒,几乎都是tmp_fib(33)
. 所以我想通过将慢查询转换为前 N 个查询来做一个更快版本的慢查询。当 N=1 时,它看起来像这样:
现在它返回顶部结果,Bravo
. 但它仍然需要5秒才能运行!唯一的解释是它仍在计算
tmp_fib(33)
,即使该计算的结果与结果无关。它应该能够决定Bravo
将要输出的内容,因此无需测试表其余部分的 WHERE 条件。
我认为也许只需要告诉优化器
tmp_fib
是昂贵的。所以我试着告诉它,就像这样:
这会改变计划中的一些成本数字,但不会使查询运行得更快。
SELECT * FROM v$version
如果这是版本相关的输出:
这是 top-1 查询的自动跟踪。它似乎声称查询花费了 1 秒,但事实并非如此。它运行了大约 5 秒钟。
更新:正如我在评论中提到的,INDEX
提示对这个查询有很大帮助。即使它不能很好地转化为我的现实世界场景,也足以被接受为正确答案。具有讽刺意味的是,甲骨文似乎已经吸取了经验,现在INDEX
默认选择该计划;我必须告诉它NO_INDEX
重现原来的缓慢行为。
在实际场景中,我应用了一个更复杂的解决方案,将查询重写为 PL/SQL 函数。这是我的技术应用于该fib
问题的外观:
感谢阅读问题并运行测试并帮助我理解执行计划的响应者,我将按照他们的建议处理这个问题。