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

为了挑战一下自己刚学的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

Docker容器内多用户版JupyterHub支持GPU

前一篇文章介绍了Docker下安装多用户版的JupyterHub,但安装完毕后会遇到一个问题:Docker内无

使用Docker安装多用户版的JupyterHub

宿主服务器使用的是Ubuntu 18.04,需要注意的是Docker目前不支持Ubuntu 19.10。如要在

使用tqdm显示Python代码执行进度

在使用Python执行一些比较耗时的操作时,为了方便观察进度,通常使用进度条的方式来可视化呈现。Python中

发表评论

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