问题标签 [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.
mysql - MySQL SELECT 按组最频繁
如何获取 MySQL 中每个标签最常出现的类别?理想情况下,我想模拟一个计算列模式的聚合函数。
sql - Django ORM:根据列的最大值获取行
我有一个 Marketorders 类,其中包含有关单一市场订单的信息,它们收集在市场快照中(由 Snapshot 类表示)。每个订单可以出现在多个快照中,最后一行当然是相关的。
我正在做的是跨多个快照获取所有订单以进行处理,但我只想包含每个订单的最新行。在 SQL 中,我会简单地做:
或者更好的是加入:
但是,我只是不知道如何使用 Django ORM 来做到这一点。有没有办法在没有原始 SQL 的情况下做到这一点?
编辑:只是为了澄清问题。假设我们有以下市场订单(忽略所有不重要的内容,只使用 orderid、reportedtime):
如何使用 ORM 获得以下设置?
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".
sql - 如何选择每个类别最新的四个项目?
我有一个项目数据库。每个项目都使用类别表中的类别 ID 进行分类。我正在尝试创建一个列出每个类别的页面,并且在每个类别下我想显示该类别中的 4 个最新项目。
例如:
宠物用品
宠物食品
我知道我可以通过查询每个类别的数据库来轻松解决这个问题,如下所示:
然后遍历该数据并查询每个类别的数据库以获取最新项目:
我想弄清楚的是我是否可以只使用 1 个查询并获取所有这些数据。我有 33 个类别,所以我认为这可能有助于减少对数据库的调用次数。
有谁知道这是否可能?或者,如果 33 个电话不是什么大不了的事,我应该用简单的方法来做。
sql - 根据连接优先级列的最小值选择不同的标识行
简化的表结构,所有 INT 列,并且没有标识列之外的 PK:
节点 (n)表:id
属性(一)表:id
, node_id
,type_id
类型 (t)表:id
,priority
我正在尝试选择一组属性,其中每个属性的各自节点的 type.priority 最低。虽然每个属性有多个node_id
,但我只想选择具有最低优先级值的属性:
这是我正在使用的基本查询,此时我也陷入困境:
我的第一个想法是使用聚合 MIN,但是我在匹配具有正确属性的 node_id 的最低优先级时遇到了问题。
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 产品)。
sql - 不知道如何编写复杂的 SQL 查询
我有以下数据库结构:
File、User、FileRevision(具有 File 的外键,以及通过中间表到 User 的多 2 多连接)。
我想获取所有 FileRevision-s:
- 在其相应的 File-s 中是最新/最新的,
- 具有指向执行搜索的用户的多对多链接(权限检查)。
我发现我可以通过执行以下操作来做到(1):
但我不知道如何同时执行 m2m 权限检查
sql - 选择按日期分组的最高分数,显示完整的日期时间
Gday,我有一个表格,显示了一系列分数和这些分数发生的日期时间。我想选择每天这些分数的最大值,但显示分数发生的日期时间。
我正在使用 Oracle 数据库(10g),表的结构如下:
p>我希望能够呈现上述结果:
p>下面的查询让我走到了一半……但不是一路。
我不能仅凭分数加入,因为同一天可能已经多次获得相同的高分。
我感谢您的帮助!
西蒙·爱德华兹
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
字段。
sql - SQL 语句
如果我有下表:
我想要一张表格来显示最新版本的三个问题?这是在 SQL Server 2005 中