db-tutorial/codes/mysql/Leetcode之SQL题/normal/第N高的薪水.sql

49 lines
1.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- 第N高的薪水
--
-- 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水Salary
--
-- +----+--------+
-- | Id | Salary |
-- +----+--------+
-- | 1 | 100 |
-- | 2 | 200 |
-- | 3 | 300 |
-- +----+--------+
-- 例如上述 Employee 表n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
--
-- +------------------------+
-- | getNthHighestSalary(2) |
-- +------------------------+
-- | 200 |
-- +------------------------+
USE db_tutorial;
CREATE TABLE IF NOT EXISTS employee (
id INT PRIMARY KEY AUTO_INCREMENT,
salary INT
);
INSERT INTO employee(salary)
VALUES (100);
INSERT INTO employee(salary)
VALUES (200);
INSERT INTO employee(salary)
VALUES (300);
SELECT DISTINCT salary
FROM employee e
WHERE 1 = (SELECT COUNT(DISTINCT salary)
FROM employee
WHERE salary >= e.salary);
CREATE FUNCTION getNthHighestSalary(n INT) RETURNS INT
BEGIN
RETURN (
SELECT DISTINCT salary
FROM employee e
WHERE n = (SELECT COUNT(DISTINCT salary)
FROM employee
WHERE salary >= e.salary)
);
END