假设我们有一个名为employees的表,包含以下列:id, name, department, salary。
我们可以使用以下SQL查询来按部门获取最低的两个薪水:
SELECT department, salary
FROM (
SELECT department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary) AS row_num
FROM employees
) AS ranked
WHERE row_num <= 2
这个查询使用了子查询和窗口函数。首先,子查询将部门和薪水按照薪水升序进行排序,并为每个部门的记录分配一个行号(row_num)。然后,外部查询选择行号小于等于2的记录,即每个部门的最低的两个薪水。
请注意,以上示例仅适用于支持窗口函数的数据库系统,如MySQL 8.0+、Oracle、SQL Server等。如果使用的是不支持窗口函数的数据库系统,可能需要使用不同的方法来实现相同的结果。