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

mysql - MySQL SELECT 按组最频繁

如何获取 MySQL 中每个标签最常出现的类别?理想情况下,我想模拟一个计算列模式的聚合函数。

0 投票
2 回答
6342 浏览

sql - Django ORM:根据列的最大值获取行

我有一个 Marketorders 类,其中包含有关单一市场订单的信息,它们收集在市场快照中(由 Snapshot 类表示)。每个订单可以出现在多个快照中,最后一行当然是相关的。

我正在做的是跨多个快照获取所有订单以进行处理,但我只想包含每个订单的最新行。在 SQL 中,我会简单地做:

或者更好的是加入:

但是,我只是不知道如何使用 Django ORM 来做到这一点。有没有办法在没有原始 SQL 的情况下做到这一点?

编辑:只是为了澄清问题。假设我们有以下市场订单(忽略所有不重要的内容,只使用 orderid、reportedtime):

如何使用 ORM 获得以下设置?

0 投票
2 回答
113 浏览

sql - Mysql select grouping

I have two tables I need to select data from TABLE_A and TABLE_B; they have a one to many relationship.

In my select statement I will often get multiple unique results from TABLE_A and this is fine. But I will also get multiple matches in TABLE_B - I need to get the most recent TABLE_B record that matches. I have an auto incremented id tag that is available.

Here is a more detailed example:

TABLE_A

TABLE_B

I need to select the data such that my returned array is something like this for a search on rows containing "filler_data1":

So in the above case I get the TABLE_B data which is the most recent, i.e. TABLE_B_id = 2 and matches the search of "filler_data1".

0 投票
8 回答
16485 浏览

sql - 如何选择每个类别最新的四个项目?

我有一个项目数据库。每个项目都使用类别表中的类别 ID 进行分类。我正在尝试创建一个列出每个类别的页面,并且在每个类别下我想显示该类别中的 4 个最新项目。

例如:

宠物用品

宠物食品

我知道我可以通过查询每个类别的数据库来轻松解决这个问题,如下所示:

然后遍历该数据并查询每个类别的数据库以获取最新项目:

我想弄清楚的是我是否可以只使用 1 个查询并获取所有这些数据。我有 33 个类别,所以我认为这可能有助于减少对数据库的调用次数。

有谁知道这是否可能?或者,如果 33 个电话不是什么大不了的事,我应该用简单的方法来做。

0 投票
2 回答
1426 浏览

sql - 根据连接优先级列的最小值选择不同的标识行

简化的表结构,所有 INT 列,并且没有标识列之外的 PK:

节点 (n)表:id

属性(一)表:id, node_id,type_id

类型 (t)表:id,priority

我正在尝试选择一组属性,其中每个属性的各自节点的 type.priority 最低。虽然每个属性有多个node_id,但我只想选择具有最低优先级值的属性:

这是我正在使用的基本查询,此时我也陷入困境:

我的第一个想法是使用聚合 MIN,但是我在匹配具有正确属性的 node_id 的最低优先级时遇到了问题。

0 投票
4 回答
15372 浏览

sql-server - SQL Server - 为每个 FK 选择前 5 行

我有以下查询,它查找与搜索匹配的TOP 5产品。每个产品都与一个商店相关联

SELECT TOP 5 * FROM Products p, Shops s WHERE p.ShopId = s.ShopId AND p.ProductName LIKE '%christmas%'

我需要扩展它,以便它返回每个Shop中的 TOP 5 Products

谁能让我知道如何修改查询以实现这一目标?- 即在每个商店中选择与“%christmas%”匹配的 TOP 5 产品(而不是当前显示所有商店中与“%chrismas%”匹配的 TOP 5 产品)。

0 投票
3 回答
668 浏览

sql - 不知道如何编写复杂的 SQL 查询

我有以下数据库结构:

File、User、FileRevision(具有 File 的外键,以及通过中间表到 User 的多 2 多连接)。

我想获取所有 FileRevision-s:

  1. 在其相应的 File-s 中是最新/最新的,
  2. 具有指向执行搜索的用户的多对多链接(权限检查)。

我发现我可以通过执行以下操作来做到(1):

但我不知道如何同时执行 m2m 权限检查

0 投票
3 回答
1473 浏览

sql - 选择按日期分组的最高分数,显示完整的日期时间

Gday,我有一个表格,显示了一系列分数和这些分数发生的日期时间。我想选择每天这些分数的最大值,但显示分数发生的日期时间。

我正在使用 Oracle 数据库(10g),表的结构如下:

p>

我希望能够呈现上述结果:

p>

下面的查询让我走到了一半……但不是一路。

我不能仅凭分数加入,因为同一天可能已经多次获得相同的高分。

我感谢您的帮助!

西蒙·爱德华兹

0 投票
2 回答
16288 浏览

sql - 从不同用户会话列表中选择最早的日期和时间

我有一个记录网站访问者活动的用户访问会话表:

accessid, userid, date, time, url

我正在尝试检索用户 ID 1234 的所有不同会话,以及每个不同会话的最早日期和时间。

这给了我每个不同 accessid 中​​随机行的日期和时间。我已经阅读了许多推荐使用 min() 和 max() 的帖子,所以我尝试了:

... 乃至...

...但我从来没有得到最早日期和时间的正确结果。

订购这种查询的技巧是什么?

编辑 -

奇怪的事情正在发生......

Bill Karwin 在下面发布的代码正确检索了 2009 年 9 月开始的会话的最早日期和时间。但是,对于在 2009-08 的某一天开始的会话,返回的是当月发生的第一次点击的时间和日期。换句话说,查询似乎没有跨越几个月!

示例数据集:

至少在我的实际数据表中,下面发布的查询会为两个 accessid 中​​的每一个找到以下最早的日期和时间:

...而且我猜想 accessid 2 的结果显示正确的唯一原因是因为它在上个月没有命中。

我要疯了吗?

编辑 2 -

答案是肯定的,我要疯了。当放置在重复结构的表中时,该查询适用于上述示例数据。

这是(截断的)原始数据。我包括了第一次点击,同一个月的另一次点击,下个月的第一次点击,然后是本月的最后一次点击。原始数据集在这些点之间有更多的命中,总共 462 行。

... 查询返回 2009-09-17 值作为查询原始表时的最早值。但是,当我复制........哦,球。

这是因为 2009-08% 的命中有一个空白userid字段。

0 投票
4 回答
181 浏览

sql - SQL 语句

如果我有下表:

我想要一张表格来显示最新版本的三个问题?这是在 SQL Server 2005 中