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

关注“Python数据科学”

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

题目来源:本篇内容为Leetcode上SQL题库177

难易程度:中等

▌刷题回顾

▌题目描述

Write a SQL query to get thenthhighest salary from thetable.

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

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

For example, given the above Employee table, thenthhighest salary wheren= 2 is. If there is nonthhighest salary, then the query should return.

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

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

▌参考答案

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

参考1:

▌答案解析

参考1

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

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181025G0DGT200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励