如何从 SQL 子句中存在的每个值中过滤特定数量的记录

How to filter specific number of records from each value present in clause in SQL

嗨 场景解释如下: 我有员工 table 拥有属于多个部门的所有员工详细信息的 100k 记录

员工 table 列如下: EmpNumber EmpName ,EmpAge, DepartmentNumer , DepartmentName.

注意:每个部门可以有数百名员工。

问题: 如何从 where 子句 IN 运算符中指定的每个 DepartmentNumer 中仅过滤 10 条员工记录。

查询: select * from Employee where DepartmentNumer in ( 'xxx' ,'yyyy') and AND ROWNUM <= 10;

上面的查询只返回 10 条属于 DepartmentNumer ='xxx' 的员工记录(因为员工 table 有数百条属于 DepartmentNumer =xxx 的记录,上面的查询没有返回来自 DepartmentNumer ='yyyy'

的任何记录

在Where子句'IN'匹配的情况下,如何从每个部门编号中过滤10条记录?

谢谢

使用row_number():

select e.*
from (select e.*,
             row_number() over (partition by departmentnumber order by departmentnumber) as seqnum
      from employee e
      where DepartmentNumer in ('xxx', 'yyyy')
     ) e
where seqnum <= 10;