假设有两个表Department和Employee。
department的表结构如下:
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(60) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
employee表结构如下:
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(60) | YES | | NULL | |
| Salary | double(9,2) | YES | | NULL | |
| DepartmentId | int(11) | YES | MUL | NULL | |
+--------------+-------------+------+-----+---------+----------------+
现在要查询每个部门的第N高薪水,查询语句如下:
CREATE FUNCTION getNthHighestSalary (N INT) RETURNS INT
BEGIN
RETURN (
SELECT
IFNULL(
(
SELECT
Salary
FROM
(
SELECT DISTINCT
(Salary)
FROM
Employee
ORDER BY
Salary DESC
) e
LIMIT N,
1
),
NULL
) AS SecondHighestSalary
);
END;
本文介绍如何在MySQL中查询每个部门的第N高薪水。涉及到的表包括Department和Employee,其中Department表存储部门信息,Employee表包含员工的姓名、薪水和所属部门ID。通过查询语句可以获取每个部门内薪水排名为N的员工信息。
5308

被折叠的 条评论
为什么被折叠?



