问题标签 [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.
sql - 选择 SQL Server 中每个员工的前 5 条记录
我有以下问题,我有这个查询选择为员工创建的最新 5 条记录:
现在我需要构建一个查询来选择loan_movements表中每个员工的前5名,我知道我可以通过选择rownum和rownum <= 5在Oracle中做到这一点,但我无法找到一种方法来做到这一点或其他东西否则在 SQL Server 2000 中具有相同的结果。
我想我可以使用一个函数,但我想先知道它是否可以用纯 SQL 完成。
谢谢您的帮助...
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 升序分组。
sql - 复杂的 MS Access Greatest-N-Per-Group 问题
我希望将以下查询合并为一个,其中
- scouting.jumpGate 是整数,
- scuting.astroLoc 是一个字符串,
- scouting.ownerguild 是一个字符串,并且
- scouting.galaxy 是一个整数
交叉链接到另一个表(并且是我的 GROUP):
和
和
一直持续到
我在微软网站上阅读了这个 Greatest N Per Group 问题后生成的代码如下:
基本上,这非常接近我想要的。一切似乎都奏效了。然而,有些 GROUPS 并没有在输出中表示出来,即使在观察数据之后,每个组都有一个满足查询约束的记录。顺便说一句,如果我去掉 scouting.ownerGuild = 'SWARM' 约束,它会完美运行(但我需要这个约束)。
sql - MySQL世界数据库试图避免子查询
我正在使用 MySQL WORLD数据库。
对于每个大陆,我想返回人口最多的国家的名称。
我能够提出一个有效的查询。试图找到另一个只使用连接的查询并避免子查询。
有没有办法使用 JOIN 编写此查询?
sql - ActiveRecord 嵌套 SELECT - 我可以在没有手动 SQL 的情况下完成吗?
我有一张桌子,上面有(除其他外)名字和等级。我想返回所有唯一名称的集合,但是对于返回的每个名称,我想选择排名最高的行。这很简单,有两个嵌套的 SELECT 语句:
MySQL 为每个名称获取第一个“命中”,(因为更早的 ORDER BY)将始终是排名最高的。
现在,如果我想用 ActiveRecord 连接到这个表,我有点不知所措。我可以把上面的东西扔进去find_by_sql
,但这感觉很脏。我尝试了类似的东西
我认为这行得通,但仍然感觉应该有更好的方法。欢迎通过 ActiveRecord 技巧或更优雅的数组操作来解决它!
mysql - MySQL 中的 ROW_NUMBER()
MySQL 中是否有一种复制 SQL Server 功能的好方法ROW_NUMBER()
?
例如:
然后,例如,我可以添加一个限制为 1 的条件,以获得每对intRow
最高的单行。col3
(col1, col2)
sql - 检索每个类别的 2 个最新帖子
假设我有 2 个表:blog_posts 和类别。每篇博文只属于一个类别,所以这里的两个表之间基本上有一个外键。
我想从每个类别中检索 2 个最后的帖子,是否可以在一个请求中实现这一点?GROUP BY 将对所有内容进行分组,并在每个类别中只留下一行。但我想要其中的 2 个。
执行 1 + N 查询(N = 类别数)很容易。首先检索类别。然后从每个类别中检索 2 个帖子。
我相信执行 M 个查询也很容易(M = 我想从每个类别中获得的帖子数)。第一个查询选择每个类别的第一个帖子(带有分组依据)。第二个查询检索每个类别的第二个帖子。等等
我只是想知道是否有人对此有更好的解决方案。我真的不介意为此进行 1+N 查询,但出于好奇心和一般 SQL 知识,将不胜感激!
在此先感谢谁能帮助我。
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 BYstock
。sku
ASC
我已经尝试过了:
SELECT * FROM stock
INNER JOIN stockfile ON stock.stockfileid = stockfile.stockfileid
GROUP BY sku
HAVING stockfile.date = MAX( stockfile.date )
ORDER BYstock
。sku
ASC
但它没有用
显示创建表库存:
CREATE TABLE
stock
(
stockid
bigint(20) NOT NULL AUTO_INCREMENT,
sku
char(25) NOT NULL,
quantity
int(5) NOT NULL,
creationdate
datetime NOT NULL,
stockfileid
smallint(5) unsigned NOT NULL,
touchdate
datetime NOT NULL,
PRIMARY KEY (stockid
)
) ENGINE=MyISAM AUTO_INCREMENT =315169 默认字符集=latin1
显示创建表库存文件:
CREATE TABLE
stockfile
(
stockfileid
smallint(5) unsigned NOT NULL AUTO_INCREMENT,
filename
varchar(25) NOT NULL,
creationdate
datetime DEFAULT NULL,
touchdate
datetime DEFAULT NULL,
date
datetime DEFAULT NULL,
begindate
datetime DEFAULT NULL,
enddate
datetime DEFAULT NULL,
PRIMARY KEY (stockfileid
)
) ENGINE=MyISAM AUTO_INCREMENT=265默认字符集=latin1
sql - SQL 查询从每个类别中选择底部 2
在 Mysql 中,我想从每个类别中选择底部的 2 个项目
给我:
在我从 sqlite3 迁移之前,我必须首先从每个类别中选择一个最低的,然后排除任何加入该类别的东西,我必须再次从每个类别中选择最低的。然后任何等于或小于一个类别中新的最低值的东西都赢了。如果出现平局,这也会选择超过 2 个,这很烦人......它的运行时间也很长。
我的最终目标是计算一个人在一个类别的最低 2 之一中的次数(还有一个名称字段),这是我不知道该怎么做的一部分。谢谢