问题标签 [greatest-n-per-group]

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 投票
6 回答
138971 浏览

sql - SQL查询以获取给定键的每个实例的最新行

我正在尝试从一个表中获取 ip、用户和最近的时间戳,该表可能同时包含用户的当前 ip 和一个或多个先前的 ip。我想为每个用户添加一行,其中包含最新的 ip 和相关的时间戳。因此,如果表如下所示:

我希望查询的输出是:

我可以在单个 sql 查询中执行此操作吗?如果重要,DBMS 是 Postgresql。

0 投票
3 回答
909 浏览

postgresql - Postgresql vlookup

假设我有一个包含以下列的表“uservalue”:

我可以轻松获得每个组的最大值:

我想要的是它返回每个组中具有最高值的 user_id。matlab中的max函数也会返回最大值的索引,有没有办法让postgresql做同样的事情?

0 投票
5 回答
20130 浏览

mysql - 多列的 MySQL Select 语句 DISTINCT

我目前正在尝试构建一个有点棘手的 MySQL Select 语句。这是我想要完成的事情:

我有一张这样的桌子:

基本上,我想做的是能够 SELECT/GROUP BY the stringID(stringID 是线程的图片)而不是重复它。此外,我想选择最近的 stringID 行(在上面的示例中是 uniqueID 3)。

因此,如果我要查询数据库,它将返回以下内容(最新的 uniqueID 在顶部):

我希望这是有道理的。谢谢你的帮助。

0 投票
1 回答
2978 浏览

mysql - 如何在 mysql 查询中从每个组中选择多个项目?

我有一些表单的论坛数据

帖子(作者,thread_id,文本)

对于每个作者,我想选择 10 个与该作者关联的不同 thread_id(可能超过 10 个,并且数量会因作者而异)。

我正在考虑使用 GROUP BY 对“作者”进行分组,但我不明白如何表达每个组的 LIMIT,以及如何将每个组扩展回 10 行。

0 投票
2 回答
13040 浏览

sql - 使用 MAX 和 GROUP BY 选择所有对应的字段

我有这张桌子:

替代文字

我想提出一个请求,该请求将为每个deal_id具有最高的行timestamp相应的status_id.

所以对于这个例子,我会返回 2 行:

我试着用这个查询来做

但它会返回错误status_id

0 投票
32 回答
901560 浏览

mysql - 检索每个组中的最后一条记录 - MySQL

有一个messages包含数据的表,如下所示:

如果我运行一个查询select * from messages group by name,我会得到如下结果:

什么查询将返回以下结果?

也就是说,应该返回每组中的最后一条记录。

目前,这是我使用的查询:

但这看起来效率很低。还有其他方法可以达到相同的结果吗?

0 投票
2 回答
5360 浏览

sql - SQL 查询,每组选择 5 个最近的

我有这张桌子

language_id 是指记录使用的语言。我想做的是检索每个 language_id 中五个最近(ORDER BY time_posted DESC LIMIT 5)记录的列表。我可以在 PHP 中使用许多不同的 SQL 查询循环执行此操作,但我觉得有一种更简单的方法。

我得买一本关于 SQL 的书,哈哈。

谢谢。

0 投票
2 回答
1116 浏览

mysql - 在 MySQL 中按 Top N 分组

stackoverflow 上有很多 SQL Top N 问题,但我似乎找不到与我的情况相匹配的问题。我想在前 n 个查询中执行一些分组。我的数据看起来像这样(显然是假值)。

该表的日期范围涵盖几个月,每月有数千行。我想做的是有一个查询告诉我每个月哪些 10 个 IP 地址最常出现。我可以使用以下方法在一个月内执行此操作:

但我真正想要的是能够看到数据集中每个月的前 n 个。这基本上禁止我使用我指定的 where 子句。当然,当我这样做时,我整个月都会得到 10 分。我正在寻找的结果应该是这样的:

这可以在 MySQL 中完成吗?我遇到的障碍似乎是 MySQL 不允许在 UNION 中包含的查询语句中使用 ORDER BY。谢谢您的帮助!

0 投票
3 回答
276 浏览

sql - 如何查询数据库中用户的排名,但只考虑每个用户的最新条目?

假设我有一个名为“Scrape”的数据库表,可能设置如下:

我试图能够根据他们的赢/输比率对我的用户进行排名。但是,每周我都会抓取有关用户的新数据,并在 Scrape 表中创建另一个条目。

如何查询按赢/输排序的用户列表,但只考虑最近的条目(ScrapeDate)?

另外,您认为人们会访问该站点并且刮擦可能正在完成中是否重要?

例如我可以有:

其中,这表示到目前为止只更新了 Bob,并且正在更新 Frank 但尚未插入的抓取。你也将如何处理这种情况?

所以,我的问题是:

  1. 您将如何处理仅查询每个用户的最新抓取以确定排名
  2. 您是否认为数据库可能处于更新状态(特别是如果一次抓取可能需要 1 天才能完成)并且并非所有用户都已完全更新这一事实很重要?如果是这样,您将如何处理?

谢谢你,也谢谢你对我的相关问题给我的答复:

从网页中抓取大量统计信息时,我应该多久将收集到的结果插入我的数据库中?

0 投票
5 回答
264 浏览

sql - 加入有限的子查询?

releases在 SQLite3 数据库中有这张表,列出了应用程序的每个发布版本:

所以对于每个 app_id,都会有多行。我有另一张桌子,apps

我想显示应用程序的名称和最新版本,其中“最新”表示 (a) 最新 release_date,如果有重复,(b) 最高 release_id。

我可以为单个应用程序执行此操作:

但当然 ORDER BY 适用于整个 SELECT 查询,如果我省略 WHERE 子句,它仍然只返回一行。

这是对小型数据库的一次性查询,因此慢速查询、临时表等都很好——我只是想不通用 SQL 的方式来做这件事。