问题标签 [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.

0 投票
1 回答
100 浏览

mysql - MySQL 获取总共 20 行,但每个唯一 ID 仅 10 行

我这里有个小问题,我会试着解释一下。我想获取表中每个唯一 id 的最新(最高 id)最多 10 行(可以多于/少于 10 行)。

因此,如果我有兴趣了解 id "1" 和 "2" 中的最新 10 行,我会将其设置LIMIT为 20 (2 * 10)。

这就是我当前的查询现在的样子(它会错误地获取第一个 id 的最新 20 行,因为该 id 存在超过 10 行)。

0 投票
1 回答
755 浏览

php - 使用 MySQL 分页查询每个组的前 N ​​个

我已经搜索了一些关于 SO 的答案,但没有人提出我想要实现的目标,所以这里有另一个关于每组前 N 个的问题。

数据库结构

目前我有一个 Post 表如下:

和如下评论表:

目标

  • 我想获得每篇由comment_datedesc 排序的帖子的前 n 条评论,并支持分页。如果可能,每个帖子必须返回 n 条评论,例如,如果帖子有 10 条评论,则应返回 3 条,如果帖子有 2 条评论,则只能返回 2 条。
  • 应返回所有评论字段。
  • 只有post_id, post_title,post_text需要返回,但如果我们可以返回所有字段那就太好了。
  • 如果可能,帖子应该只出现一次,即如果它在第 1 页,那么在第 2 页将不会被考虑(请参见下面的示例)。我认为这比允许帖子多次出现更容易实现。

例子

我有以下帖子:

和以下评论(按comment_datedesc 排序,date 12比 更新date 11):

假设我每页限制为 6 条评论,并且n是 3 条。预期结果是:

我已经尝试过类似的事情:Top N Per Group with Multiple Table Joins但是如果我们按comment_datedesc 排序,则不能保证返回的结果正好是 n 个。

任何帮助是极大的赞赏。

0 投票
4 回答
238 浏览

sql - 优化 postgres 搜索查询的问题

我对以下 PostgreSQL 查询有疑问,运行时间超过 10 秒有没有办法将此查询加速到合理的速度,我只是在一个非常大的数据库中寻找与视频相关的最相关的搜索词.

当使用分析运行查询时,生成的查询计划如下(http://explain.depesz.com/s/yDJ):

该表的架构如下:

我已经设法通过仅索引扫描将其缩短到 7 秒,但仍然不够低。我在 aws r3.xlarge 实例上的 Ubuntu 14.04 上运行 PostgreSQL 9.3,表中有大约 5000 万行。任何意见是极大的赞赏!

编辑:

附件是 SELECT schemaname,tablename,attname,null_frac,avg_width,n_distinct FROM pg_stats WHERE schemaname='public' and tablename='term_search'的结果;

0 投票
3 回答
222 浏览

sql - MSSQL通过ID从多列中获取最大值

我在这方面遇到过很多类似的帖子,但没有一个我发现有这个具体的。

这是我的示例数据:

我首先希望获得每个 CID 和 NARID 的最大 NADate:

然后从这些结果中,获取具有最大 AEDate 的记录(以及所有其他相应字段):

数据库类型为 MSSQL 2005。

0 投票
1 回答
3291 浏览

sql-server - Count(*) 再次在 SQL Server 中排名前 1

我们使用具有大量记录的表。任何人都知道是否更好地制作 Count(*) 或 Top 1 以了解特定记录是否存在或一组记录是否符合某些条件。还有这种类型的语句锁表或者我需要指定不锁表。

0 投票
1 回答
26 浏览

oracle - 无法仅获得每个作业的第一次出现

我正在尝试从回购中查询一些工作,但是我只需要具有最新开始时间的工作。我已经尝试为此使用 ROW_NUMBER 并为每个作业只选择第 1 行,但它似乎并没有失败:

我可以请求一些帮助吗?

0 投票
4 回答
67 浏览

oracle - 试图找出美国 50 个州的前 5 个土地面积

我创建了一个表。一列称为州,另一列称为土地面积。我正在使用 oracle 11g。我在这里查看了各种问题,但找不到解决方案。这是我到目前为止所尝试的:

就数量而言,这并没有提供前 5 个土地面积。

我也试过这个,但也不行:

有人有什么建议可以让我走上正轨吗?

这是一张桌子的样本

查询的所需输出:

0 投票
3 回答
76 浏览

sql - 试图弄清楚如何加入这些查询

我有一个名为等级的表。名为“学生、实用、书面”的列。我试图找出考试总分排名前 5 位的学生。以下是我不确定如何正确加入它们的查询。我正在使用 oracle 11g。这让我得到了每个学生的总金额:

这将获得前 5 名的学生:

0 投票
1 回答
1339 浏览

sql - Oracle 链接服务器 top N 语法

我在 Microsoft SQL Server 2012 中有一个链接的 Oracle 11g 服务器。

我正在尝试从 Oracle 检索一个大型链接数据集,因此为了限制它,我只想获取前 100 条记录。

在 SQL Server 中,它很简单

在 Oracle 中,语法是

只要我的 SQL Server 2012 查询中有两个以上的连接,我的

导致以下错误

链接服务器“BIS”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-01403:未找到数据
消息 7346,级别 16,状态 2,第 1
行无法从 OLE DB 提供程序“OraOLEDB. Oracle”用于链接服务器“BIS”。

如果我拿出top 100来,它可以工作,但会在我们的网络上拖出太多数据。另外,在我完成之前,我还需要将相当数量的连接添加到我已经拥有的 3 的 select 语句中。

如何在选择语句中加入大量表,但在我的 SQL Server 2012 上使用 T-SQL 语法仅返回前 100 条记录并从 Oracle 检索这些记录?

0 投票
1 回答
98 浏览

mongodb - Mongo 查询前 N 个子文档

我在 MongoDB 的用户集合中有以下数据:

我正在尝试计算整个集合的第一个 appId。因此,对于每个用户,我需要获取他们的第一个 allowedAppId,即该 appId 的组,并获取整个集合的计数。

对于上面的数据,我试图得到这个:

一旦我开始工作,我将尝试将日期参数放在 allowedAppIds.createdDate 中的创建日期周围,以进一步按日期过滤。

我对 Mongo 还是很陌生,所以如果这是基本的,我很抱歉。我在 google 等上看到了很多示例,但找不到任何可以使用聚合管道从子文档中获得前 1 条记录的东西。

通过在我的管道中执行此操作,我确实获得了对实际具有 allowedAppIds 的记录的过滤(并非所有用户文档都有 allowedAppId 子文档):

但我仍然无法从那里获取第一个与 createdDate 相关联的 appId。