阅读 259

数据库知识点 ifnull() limit offset distinct 的用法

数据库知识点 ifnull() limit offset distinct 的用法

- ifnull


ifnull(a,b) 若a成立则为a,否则为b

-limit x


返回查询结果的x条数据

-offset y


偏移y条语句

-distinct


去除重复数据

应用场景:


查询第y高的x条数据

练习:


Leetcode 176. 第二高的薪水

Leetcode 177. 第N高的薪水

1.Leetcode 176. 第二高的薪水


编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+----+--------+

| Id | Salary |

+----+--------+

| 1  | 100    |

| 2  | 200    |

| 3  | 300    |

+----+--------+


例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。

如果不存在第二高的薪水,那么查询应返回 null。

+---------------------+

| SecondHighestSalary |

+---------------------+

| 200                 |

+---------------------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

SELECT

    IFNULL(

      (SELECT DISTINCT Salary

       FROM Employee

       ORDER BY Salary DESC

        LIMIT 1 OFFSET 1),

    NULL) AS SecondHighestSalary


1

2

3

4

5

6

7

8

2. Leetcode 177. 第N高的薪水


编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。

+----+--------+

| Id | Salary |

+----+--------+

| 1  | 100    |

| 2  | 200    |

| 3  | 300    |

+----+--------+

例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。


+------------------------+

| getNthHighestSalary(2) |

+------------------------+

| 200                    |

+------------------------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT

BEGIN

set n=N-1;

  RETURN (

      # Write your MySQL query statement below.

      ifnull(

          (select distinct Salary from Employee 

          order by Salary desc 

          limit 1 offset n),null)      

  );

END

————————————————

版权声明:本文为CSDN博主「懿朔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/beginerToBetter/article/details/116069672


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐