小编CMo*_*ney的帖子

限制每组加入的行数(不是1行)

鉴于这些表格:

TABLE Stores (
 store_id INT,
 store_name VARCHAR,
 etc
);

TABLE Employees (
 employee_id INT,
 store_id INT,
 employee_name VARCHAR,
 currently_employed BOOLEAN,
 etc
);
Run Code Online (Sandbox Code Playgroud)

我想为每家商店列出15名雇员最长的员工(假设15 employee_id名员工最低),或者如果有15名员工,则列出所有员工currently_employed='t'.我想用join子句来做.

我发现很多人这样做的例子只有 1行,通常是最小或最大(单个最长雇用的员工),但我想基本上结合一个ORDER BY和一个LIMIT内部的联接.其中一些例子可以在这里找到:

我也找到了很好的例子来做这个商店(我没有,我有大约5000家商店):

我也看到你可以使用TOP而不是ORDER BYLIMIT,而不是PostgreSQL.

我认为这两个表之间的连接子句不是唯一(或者甚至是最好的方法),如果它可以只store_id在employees表的内部工作,那么我会对其他方法持开放态度.之后可以随时加入.

由于我对SQL很陌生,我想要任何理论背景或其他解释可以帮助我理解工作原理.

sql postgresql join greatest-n-per-group sql-limit

3
推荐指数
1
解决办法
1495
查看次数

标签 统计

greatest-n-per-group ×1

join ×1

postgresql ×1

sql ×1

sql-limit ×1