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

16 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

AttributeError: ‘NoneTyp…

在PyCharm创建的Virtualenv环境下,使用pip安装包时,老是提示需要升级pip,具体提示信息为:
12 sec read

Anaconda包更新遇到的问题及解决方案

Anaconda可以通过命令升级所有的Python包,具体命令为:conda update –al
7 sec read

复合事件处理CEP简介

什么是复合事件处理? 这是一个IT事件爆发的时代,各种IT系统之间或系统内部,每天产生大量事件。系统在关键点打
23 sec read

发表评论

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