问题标签 [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 投票
1 回答
330 浏览

sql - 每个 foreign_key 的 SQL 最新记录

我有以下两张桌子:

  • 成分(ID,名称)
  • 成分_价格(id,成分_id,价格,created_at)

这样一种成分可以有很多价格。获得每种成分最新输入价格的最佳方式是什么?我知道它可以通过子选择轻松完成,但我想知道是否有更有效的方法来做到这一点。

0 投票
7 回答
39082 浏览

sql - How do I join the most recent row in one table to another table?

I have data that looks like this:

Periodically, a process will run and give a score to each entity. The process generates the data and adds it to a scores table like so:

I want to be able to select all of the entities along with the most recent recorded score for each resulting in some data like this:

I can get the data for a single entity using this query:

But I'm at a loss for how to select the same for all entities. Perhaps it's staring me in the face?

Thank you very kindly for taking the time.

Thanks for the great responses. I'll give it a few days to see if a preferred solution bubbles up then I'll select the answer.

UPDATE: I've tried out several of the proposed solutions, the main issue I'm facing now is that if an entity does not yet have a generated score they don't appear in the list.

What would the SQL look like to ensure that all entities are returned, even if they don't have any score posted yet?

UPDATE: Answer selected. Thanks everyone!

0 投票
6 回答
953 浏览

sql - 按 Max 分组

我正在尝试为每个 symb 的最大股东数量拉取 symb 和价格。例如,我将只有 1 行 ASN 价格为 60.62 美元。

0 投票
21 回答
1756900 浏览

mysql - 如何在 MYSQL 中选择具有 MAX(列值)和 PARTITION 的行?

我的桌子是:

ID 约会时间 播放器 资源
1 10 2009 年 4 月 3 日 约翰 399
2 11 2009 年 4 月 3 日 朱丽叶 244
5 12 2009 年 4 月 3 日 硼砂 555
3 10 2009 年 3 月 3 日 约翰 300
4 11 2009 年 3 月 3 日 朱丽叶 200
6 12 2009 年 3 月 3 日 硼砂 500
7 13 24/12/2008 硼砂 600
8 13 2009 年 1 月 1 日 硼砂 700

我需要选择每个不同的home持有最大值的datetime.

结果将是:

ID 约会时间 播放器 资源
1 10 2009 年 4 月 3 日 约翰 399
2 11 2009 年 4 月 3 日 朱丽叶 244
5 12 2009 年 4 月 3 日 硼砂 555
8 13 2009 年 1 月 1 日 硼砂 700

我试过了:

不工作。结果集有 130 行,尽管数据库有 187 行。结果包括一些重复的home.

没有。给出所有记录。

有各种结果。

0 投票
1 回答
5180 浏览

sql - 将休眠用于复杂查询的最佳方式,例如每组前 N 个

我现在在一个报告应用程序上工作了一段时间,我使用休眠来定义我的查询。然而,我越来越觉得,对于报告用例,这不是最好的方法。

  1. 查询只会产生部分列,因此不会产生类型化的对象(除非您在 java 中强制转换所有字段)。
  2. 不直接进入 sql 或 hql 就很难表达查询。

我目前的问题是我想获得每个组的前 N ​​个,例如组中每个元素的最后 5 天,每天我都会显示访问者的数量。

结果应如下所示:

将每天每行存储的数据转换为这样的输出的最佳方法是什么?是时候回到常规 sql 并使用无类型数据了吗?

我真的很想为我的结果使用类型化的对象,但是 java 让我的生活变得非常艰难。欢迎任何建议!

0 投票
4 回答
204 浏览

mysql - 如何从mysql中的得分表中获取每场比赛的3个第一名?

我有下表:

这是一个分数表,存储了每个游戏的 user_id 和 game_id 和分数。每场比赛的前3名都有奖杯。我有一个 user_id,我想检查该特定用户是否从任何游戏中获得任何奖杯。

我可以在不创建临时表的情况下以某种方式创建此查询吗?

0 投票
9 回答
45107 浏览

sql - 获取每个 ID 的最大值的简单查询

好的,我有一张这样的桌子:

这一切都在同一天。我只需要查询返回每个 ID 的最大信号:

我尝试使用 MAX() 并且聚合弄乱了每个记录的 Station 和 OwnerID 都不同。我需要加入吗?

0 投票
1 回答
2696 浏览

tsql - GROUP BY 子句的 TOP N 问题

问题:我需要找到最后三个 [GiftDetails] 的所有活动 [GiftPledges] 的数量为零。

现在,我的所有 [GiftPledges] 至少包含三个 [GiftDetails]。

这为我提供了与给定 [GiftPledge] 关联的三个最新 [GiftDetails]。问题是我不知道如何对第二个查询求和并将其作为第一个查询中 WHERE 子句的一部分。

我发现了这篇关于“每组前 n 名”的文章,这似乎是我需要前进的方向,但我不确定我是否走在正确的轨道上。

任何帮助、澄清或建议将不胜感激。

0 投票
1 回答
778 浏览

php - 如何加入表中的最新记录?

我需要做的很简单......但它是凌晨 3 点,我可能忽略了显而易见的事情。

我正在编写一个简单的论坛。一个表存储论坛标题、描述等,而另一个存储帖子。在显示所有论坛列表的论坛列表中,我想抓取每个论坛中的最新帖子,并显示帖子主题、发布者和帖子 ID 以及日期。简单的。

唯一的问题是,当我加入帖子表时,它会加入表中的第一个记录,而不是最后一个记录,这表示该论坛中的最后一个帖子。

这是获取“最新”帖子(现在用作“第一篇帖子”)的论坛列表+数据的简化查询。

我怎样才能解决这个问题?

0 投票
2 回答
4794 浏览

mysql - MYSQL 使用 GROUP BY 时显示不正确的行

我有两张桌子:

其中工单代表支持人员和客户之间的电子邮件线程,文章是组成线程的单个消息。

我正在寻找每个ticket_id 具有最高传入时间(表示为unix 时间戳)的文章,这是我目前正在使用的查询:

例如,

但结果看起来是文章 id 最小的行,而不是我要查找的那是传入时间最长的文章。

任何建议将不胜感激!