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

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

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

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

方案1:

方案2:

方案3:

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

方案4:

方案5:

方案6:

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

具体请参考:

方案7:

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

方案8:

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

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

微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

开源地理位置数据库:tile38

Tile38是地理定位数据存储,空间索引和实时地理围栏。它支持多种对象类型,包括纬度/经度点,边界框,XYZ平

Redis存储经纬度数据并进行地理操作

Redis 从3.2.0版本开始提供了对地理位置的支持,reids 的地理位置坐标使用 sorted set存

使用Python检测符号及乱码字符

最近在进行关键词的分析,中间涉及到对一些特殊的字符进行过滤的需求。包括带符号的(有部分还是SQL注入),并且存

发表评论

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