查看: 1119| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 求讲解:Leetcode 176. Second Highest Salary

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 LoveLinux 于 2021-6-24 01:59 编辑

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

我写的(MS SQL):
select case
        when count(distinct t.Salary) < 2 then null
        else t.Salary
    end as SecondHighestSalary
from
(select Salary, rank() over (order by Salary desc) as [rank]
from Employee
) t
where t.rank = 2

error message:[SQL Server]Column 't.Salary' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

一直在读网上分析,试了有十几次了,总是做不出来处理null的部分,求大神讲解我错在哪了。。




上一篇:请问面试官, 动态规划会考到状态压缩吗?
下一篇:某国人无人车公司OA遇到的题没有思路
推荐
zwmtrue 2021-6-24 02:31:49 | 只看该作者
全局:
COUNT 是个aggregate function,不能单独拎出来用。
你可以把(select count(*) from t )> 2 作为一个case

这个解法应该是最接近你的思路的
https://leetcode.com/problems/se ... ng!!-NULL-test-case
回复

使用道具 举报

🔗
 楼主| LoveLinux 2021-6-24 21:14:07 | 只看该作者
全局:
zwmtrue 发表于 2021-6-24 02:31
COUNT 是个aggregate function,不能单独拎出来用。
你可以把(select count(*) from t )> 2 作为一个ca ...

又看了好半天,终于理解了。 感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表