SQL试题:找出数据表中薪水第二高的员工

19 sec read

为了挑战一下自己刚学的SQL知识,找了还算流行的题目:寻找数据表中薪水第二高的员工,也算是巩固下自己刚学的知识。

目前接触的是SQL Server,所以以下代码可能无法在其他数据库上运行。

一、用尽可能多的方案来查找

方案1:

方案2:

方案3:

前面3个方案都比较好理解,但是并不是都是正确的,如果有两个第二名存在,方案2和方案3就是不能满足原始需求的。

方案4:

方案5:

方案6:

方案4、5、6最主要的是几个关键词的区别,需要在使用的时候注意,ROW_NUMBER()就是按照1234的顺序进行排列的,类似自增长;DENSE_RANK()则是按名次排列,相同的名次如果有多位,后面的名次是不受影响的。如,第二名有两位,第三名还是会存在,与之相对的是RANK(),如果第二名2位,则排名直接跳到第四名。

具体请参考:

http://msdn.microsoft.com/zh-cn/library/ms186734.aspx

http://technet.microsoft.com/zh-cn/library/ms173825.aspx

http://technet.microsoft.com/zh-cn/library/ms176102.aspx

方案7:

上面的SQL非常的绕,具体的也一下子届时不清楚。

方案8:

方案8是SQL Server 2012才支持的语句,有了这个方法对于SQL Server的分页来说就简单了。

具体请参考:http://technet.microsoft.com/zh-cn/library/gg699618.aspx

 

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

C语言学习:size_t

在学习C语言的时候,遇到了一个新的数据类型size_t,截止目前也没有完全理清这个类似的具体场景及出现的原因。
44 sec read

C语言学习:main()函数的正确写法

C语言虽然是一门古老的语言,但是其标准一直在完善,所以很多以前支持的语法在到当前已经不能在使用了。 C语言的版
41 sec read

Scipy数学函数的Scala实现

最近在推进项目的时候,遇到需要将线下的Python代码转化成线上的集群代码,由于机器代码环境是Scala,所以
4 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注