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

mysql - 获取 SUM 生成的新列的前 10 名的 SQL 查询

我有一个看起来像这样的查询:

如何显示前 10 个总数?

0 投票
3 回答
9678 浏览

sql-server - NHibernate 使用 fetch 选择带有条件的前 N ​​个子项

我有简单的用户实体:

我的映射定义如下:

此处的其他约定:

我需要选择前 100 名使用电话且名称以“A”开头的用户。但我需要在其中加载带有电话的用户对象。

所以我做这个查询:

而我只有 72 个用户。

为什么?好吧,因为 NHibernate 使用左外连接生成单个 TOP N 选择,并且 SQL 返回同一用户实体的多条记录,因为某些用户确实拥有不止一部手机。但这都是针对 TOP N 的——所以我得到了 100 条与手机连接的用户记录,但其中只有 72 条是唯一实体。

有正确的方法吗?

0 投票
3 回答
822 浏览

java - 选择具有标准的Java模型列表中的前n个元素元素

我有一个这样的 MySQL 表

对于我的所有用户,我想随机选择 n 个信息(比如 1 个),或者使用一个标准。我知道当表很大时它在纯 MySQL 中非常密集(我尝试了这个解决方案http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-每组-in-sql/ )

在 Java 中,我查询整个表,并将数据放在 a 中List<ModelData>,其中ModelData是简单的模型,只有 getter 和 setter。什么是剥离这个列表的最佳方法,所以最后我会:

0 投票
3 回答
401 浏览

oracle - 访问 ID 列表时的前 N ​​个查询性能

我有一个前 N 个查询给我带来了问题。

首先,我有如下查询:

此查询运行良好。它可以非常有效地为我找到海量数据集的前 10 行,使用关于 Mercer_id、subscription_status、transaction_date 的索引。

如您所见,每个阶段的估计实际行数为 10,这是正确的。

现在,我需要获取一组商家 ID 的前 N ​​条记录,因此如果我将查询更改为包含两个商家 ID,则性能坦克:

现在请注意,有 42K 行来自两次索引范围扫描——当索引范围扫描达到 10 行时,Oracle 不再中止索引范围扫描。我认为会发生的是,Oracle 最多会为每个 Mercer_id 获取 10 行,因为知道查询最多将返回 10 行。然后它会根据交易日期对 10 + 10 行进行排序并输出前 10 行,但它拒绝这样做。

当我需要将商家列表传递到查询中时,有谁知道如何获得第一个查询的性能?我可能可以使用 union all 获得性能,但商家列表是可变的,可能介于 1 或 2 到几百个之间。

0 投票
3 回答
2807 浏览

sql - 前 N 个聚合子查询

假设我有一张名为 COFFEE 的表格,其中显示了公交车站和公交车站 10 个街区内的所有咖啡店:

[编辑:明确问题是如何通过非程序查询来做到这一点]

而且我必须编写一个查询(而不是 proc)来显示每个公交车站到最近的五家咖啡店的平均距离。

我可以找到特定巴士站的前 5 家最近的咖啡店:

但是如何将其连接为子查询并使 AvgDistToFiveClosest 成为我的主查询中返回的列:

鉴于上面的示例数据,查询应返回:

0 投票
4 回答
64542 浏览

r - 如何从数据框中按降序获得前 n 家公司

我正在尝试从数据框中获取前“n”家公司。下面是我的代码。

现在我想从这个排序的向量中获得前 50 个观察值。

0 投票
3 回答
235 浏览

c++ - 在我的朋友网络中找到最受欢迎的赞

我正在努力寻找在我的朋友网络中最受欢迎的点赞。“在我的朋友网络中最受欢迎”被定义为“被我的朋友点赞最多的人”。

假设每个朋友都有一个唯一的 id 并且有许多喜欢的页面。所以,给定一组这样的朋友,我想找到最多的朋友点赞的,以及喜欢这个东西的朋友。本质上,我想展示“你的朋友 X、Y 和 Z 喜欢这个”之类的内容。

我的第一个解决方案是使用 Map(用于存储反向映射:like->set)和 Priority Queue(用于查找前 N 个)。这是我的算法(使用 C++ STL):

由于 STL 内部使用红黑树来实现优先级队列的映射和最小/最大堆,这种方法对我来说似乎很快。但是如果我有 100 个朋友,每个人都有 100 个喜欢,那么内存使用量会很大。当然,我应该使用朋友 id 和点赞 id 来进行所有计算,而不是存储整个对象,这会大大减少内存使用量。

还有哪些算法或数据结构可以用来提高效率(提高速度,减少内存)?出于某种原因,我无法针对每个喜欢存储朋友列表,它必须在运行时计算。我正在使用 C++ 开发它,因此使用 STL 或 boost 的解决方案会更好。

0 投票
1 回答
1661 浏览

sql - Oracle SQL:为每个 id 显示 n 行

我有一个包含 2 列 ID 和 URLS 的表,每个 ID 都有几个 URLS。我只想为每个 ID 提取最多 5 个 URL。如何在 Oracle SQL 中执行此操作?

0 投票
2 回答
1061 浏览

mysql - 关于这些的 SQL 问题

我有 4 张桌子。一种叫做艺术家。这是表结构:

另一张表称为工作

转表

客户表

第一个问题是哪位艺术家的作品售出最多,以及该艺术家的作品已售出多少。

我的 SQL 查询如下

我要得到整张桌子,但我只想显示最高计数的第一行 - 我该怎么做?

qns 2 是哪位艺术家的作品获得最高平均利润的销售额(即艺术家每次销售作品所获得的平均利润),以及该金额是多少。

我的 SQL 查询如下

我无法执行它

0 投票
2 回答
1416 浏览

sql - Oracle中如何显示最高值的记录?

我有 4 个具有以下结构的表:

artist

work

Trans

Customer

第一个问题是哪位艺术家的作品最多,artsold以及有多少艺术家的作品被售出。

我的 SQL 查询是这样的:

我要得到整张桌子,但我只想显示最高计数的第一行我该怎么做?

我已尝试插入WHERE ROWNUM <=1 ,但它显示艺术家 ID 为 1

qns 2 是哪位艺术家的作品获得最高平均利润的销售额(即艺术家每次销售作品所获得的平均利润),该金额是多少。

我的 SQL 查询是:

我无法执行它

我已经尝试了下面的查询,但仍然无法得到它不断收到错误丢失右括号