鉴于这些表:
TABLE Stores (
store_id INT,
store_name VARCHAR,
etc
);
TABLE Employees (
employee_id INT,
store_id INT,
employee_name VARCHAR,
currently_employed BOOLEAN,
etc
);
我想列出每家商店雇佣时间最长的 15 名员工(假设 15 名最低employee_id
),或者如果有 15 名员工,则列出商店的所有员工currently_employed='t'
。我想用一个连接子句来做。
我发现很多人只为 1 行执行此操作的示例,通常是最小或最大(单个最长雇员),但我想基本上在连接中结合 anORDER BY
和 a LIMIT
。其中一些示例可以在这里找到:
我还找到了逐个商店进行此操作的不错示例(我没有,我有大约 5000 家商店):
我还看到您可以使用andTOP
代替,但不能用于 PostgreSQL。ORDER BY
LIMIT
我认为两个表之间的连接子句不是唯一(甚至不一定是最好的方法)这样做,如果可以通过store_id
员工表的不同内部工作,所以我愿意接受其他方法。以后可以随时加入。
由于我对 SQL 很陌生,我想要任何可以帮助我理解工作原理的理论背景或其他解释。