前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SQL刷题系列】:leetcode177 Nth Highest Salary

【SQL刷题系列】:leetcode177 Nth Highest Salary

作者头像
Python数据科学
发布2018-11-30 09:46:49
8120
发布2018-11-30 09:46:49
举报

SQL刷题系列:SQL作为一种数据库查询和程序设计语言,是从事数据技术人员必备的技能,也是各大公司的数据分析、数据挖掘、数据库等笔试题必考的一种题。所以,不论大家是转行还是学习都少不了这一关。为此,Python数据科学开启了SQL刷题的系列,希望可以帮助有需要的朋友们。 题目来源:本篇内容为Leetcode上SQL题库177 难易程度:中等

▌刷题回顾

【SQL刷题系列】:leetcode178 Rank Scores

【SQL刷题系列】:leetcode183 Customers Who Never Order

【SQL刷题系列】:leetcode180 Consecutive Numbers

▌题目描述

Write a SQL query to get the nth highest salary from the Employee table.

写一段SQL查询语句,以得到Employee表中第n个高的工资。

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the nth highest salary where n = 2 is 200. If there is no nth highest salary, then the query should return null.

例如,给定以上Employee表,第2高的工资就是200。如果没找到第n个高的公司,查询需要返回null。

+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200                    |
+------------------------+

▌参考答案

题中已经写好了一个函数,我们需要将查询的SQL语句写在注释下面,然后返回结果。

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.

  );
END

参考1:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT DISTINCT Salary
      FROM Employee
      ORDER BY Salary DESC LIMIT M, 1
      );
END

▌答案解析

参考1

查找第n高的工资,我们很自然的想到了LIMIT的用法。

LIMIT X,Y含义:X表示跳过X个数据,Y表示选取Y个数据。

或者使用 LIMIT Y OFFSET X,也是一样的效果。

如果想要得到第n高的工资,那么就需要跳过前面n-1个数据。因此,我们直接写成下面这样:

SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC LIMIT N-1, 1

但是这样写是有语法错误的,SQL语句无法执行。因此我们绕过这种错误写法,而在前面定义一个新的变量M,它的值为N-1,这样就可以完美解决了。

DECLARE M INT;
SET M=N-1;

所以,最终的完整代码如下:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT DISTINCT Salary
      FROM Employee
      ORDER BY Salary DESC LIMIT M, 1
      );
END
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python数据科学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档