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

sql - 以下查询是否纠正了问题?

0 投票
2 回答
6308 浏览

sql - 选择 SQL Server 中每个员工的前 5 条记录

我有以下问题,我有这个查询选择为员工创建的最新 5 条记录:

现在我需要构建一个查询来选择loan_movements表中每个员工的前5名,我知道我可以通过选择rownum和rownum <= 5在Oracle中做到这一点,但我无法找到一种方法来做到这一点或其他东西否则在 SQL Server 2000 中具有相同的结果。

我想我可以使用一个函数,但我想先知道它是否可以用纯 SQL 完成。

谢谢您的帮助...

0 投票
2 回答
644 浏览

sql - 使用 MS Access 和 ASP 将以下多个 SQL 查询组合为 1

我想结合

Select top 2 scouting.* From scouting Where scouting.astroLoc Like 'D01%' AND scouting.ownerGuild = 'SWARM' Order By scouting.jumpGate Desc

Select top 2 scouting.* From scouting Where scouting.astroLoc Like 'D02%' scouting.ownerGuild = 'SWARM' Order By scouting.jumpGate Desc

Select top 2 scouting.* From scouting Where scouting.astroLoc Like 'D03%' scouting.ownerGuild = 'SWARM' Order By scouting.jumpGate Desc

一直持续到

Select top 2 scouting.* From scouting Where scouting.astroLoc Like 'D79%' scouting.ownerGuild = 'SWARM' Order By scouting.jumpGate Desc

... 到 1 个 SQL 查询中,其中 TOP 3 记录按 scouting.astroLoc 升序分组。

0 投票
1 回答
539 浏览

sql - 复杂的 MS Access Greatest-N-Per-Group 问题

我希望将以下查询合并为一个,其中

  • scouting.jumpGate 是整数,
  • scuting.astroLoc 是一个字符串,
  • scouting.ownerguild 是一个字符串,并且
  • scouting.galaxy 是一个整数

交叉链接到另一个表(并且是我的 GROUP):

一直持续到

我在微软网站上阅读了这个 Greatest N Per Group 问题后生成的代码如下:

基本上,这非常接近我想要的。一切似乎都奏效了。然而,有些 GROUPS 并没有在输出中表示出来,即使在观察数据之后,每个组都有一个满足查询约束的记录。顺便说一句,如果我去掉 scouting.ownerGuild = 'SWARM' 约束,它会完美运行(但我需要这个约束)。

0 投票
1 回答
1217 浏览

sql - MySQL世界数据库试图避免子查询

我正在使用 MySQL WORLD数据库。

对于每个大陆,我想返回人口最多的国家的名称。

我能够提出一个有效的查询。试图找到另一个只使用连接的查询并避免子查询。

有没有办法使用 JOIN 编写此查询?

0 投票
1 回答
837 浏览

sql - ActiveRecord 嵌套 SELECT - 我可以在没有手动 SQL 的情况下完成吗?

我有一张桌子,上面有(除其他外)名字和等级。我想返回所有唯一名称的集合,但是对于返回的每个名称,我想选择排名最高的行。这很简单,有两个嵌套的 SELECT 语句:

MySQL 为每个名称获取第一个“命中”,(因为更早的 ORDER BY)将始终是排名最高的。

现在,如果我想用 ActiveRecord 连接到这个表,我有点不知所措。我可以把上面的东西扔进去find_by_sql,但这感觉很脏。我尝试了类似的东西

我认为这行得通,但仍然感觉应该有更好的方法。欢迎通过 ActiveRecord 技巧或更优雅的数组操作来解决它!

0 投票
25 回答
652976 浏览

mysql - MySQL 中的 ROW_NUMBER()

MySQL 中是否有一种复制 SQL Server 功能的好方法ROW_NUMBER()

例如:

然后,例如,我可以添加一个限制为 1 的条件,以获得每对intRow最高的单行。col3(col1, col2)

0 投票
2 回答
508 浏览

sql - 检索每个类别的 2 个最新帖子

假设我有 2 个表:blog_posts 和类别。每篇博文只属于一个类别,所以这里的两个表之间基本上有一个外键。

我想从每个类别中检索 2 个最后的帖子,是否可以在一个请求中实现这一点?GROUP BY 将对所有内容进行分组,并在每个类别中只留下一行。但我想要其中的 2 个。

执行 1 + N 查询(​​N = 类别数)很容易。首先检索类别。然后从每个类别中检索 2 个帖子。

我相信执行 M 个查询也很容易(M = 我想从每个类别中获得的帖子数)。第一个查询选择每个类别的第一个帖子(带有分组依据)。第二个查询检索每个类别的第二个帖子。等等

我只是想知道是否有人对此有更好的解决方案。我真的不介意为此进行 1+N 查询,但出于好奇心和一般 SQL 知识,将不胜感激!

在此先感谢谁能帮助我。

0 投票
4 回答
3018 浏览

sql - 从连接的 MySQL 表中选择最新条目

我的数据库中有库存数量信息。
1 个表,“stock”,包含 productid (sku) 以及数量和来自哪里的文件名。

另一个表“stockfile”包含所有已处理的文件名以及日期。

现在我需要获取所有具有最新库存数量值的产品。

这给了我所有产品的所有库存数量多次(产生 300.000 条记录)

SELECT stock.stockid, stock.sku, stock.quantity, stockfile.filename, stockfile.date
FROM stock
INNER JOIN stockfile ON stock.stockfileid = stockfile.stockfileid
ORDER BY stockskuASC

我已经尝试过了:

SELECT * FROM stock
INNER JOIN stockfile ON stock.stockfileid = stockfile.stockfileid
GROUP BY sku
HAVING stockfile.date = MAX( stockfile.date )
ORDER BY stockskuASC

但它没有用

显示创建表库存:

CREATE TABLE stock(
stockidbigint(20) NOT NULL AUTO_INCREMENT,
skuchar(25) NOT NULL,
quantityint(5) NOT NULL,
creationdatedatetime NOT NULL,
stockfileidsmallint(5) unsigned NOT NULL,
touchdatedatetime NOT NULL,
PRIMARY KEY ( stockid)
) ENGINE=MyISAM AUTO_INCREMENT =315169 默认字符集=latin1

显示创建表库存文件:

CREATE TABLE stockfile(
stockfileidsmallint(5) unsigned NOT NULL AUTO_INCREMENT,
filenamevarchar(25) NOT NULL,
creationdatedatetime DEFAULT NULL,
touchdatedatetime DEFAULT NULL,
datedatetime DEFAULT NULL,
begindatedatetime DEFAULT NULL,
enddatedatetime DEFAULT NULL,
PRIMARY KEY ( stockfileid)
) ENGINE=MyISAM AUTO_INCREMENT=265默认字符集=latin1

0 投票
5 回答
3005 浏览

sql - SQL 查询从每个类别中选择底部 2

在 Mysql 中,我想从每个类别中选择底部的 2 个项目

给我:

在我从 sqlite3 迁移之前,我必须首先从每个类别中选择一个最低的,然后排除任何加入该类别的东西,我必须再次从每个类别中选择最低的。然后任何等于或小于一个类别中新的最低值的东西都赢了。如果出现平局,这也会选择超过 2 个,这很烦人......它的运行时间也很长。

我的最终目标是计算一个人在一个类别的最低 2 之一中的次数(还有一个名称字段),这是我不知道该怎么做的一部分。谢谢