SQL编程思想:基于5种主流数据库代码实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人


2.4.1 Top-N排行榜

我们经常会看到各种Top-N排行榜,例如销量排行榜、十大热门游戏等。Top-N排行榜的原理就是先对数据进行排序,然后返回前N条记录。SQL标准定义了FETCH和OFFSET子句,可以用于限制返回结果的数量。例如,以下语句查找月薪排名前5的员工:

其中,ORDER BY子句表示按照月薪从高到低进行排序,OFFSET子句表示跳过0行记录,FETCH子句表示获取前5条记录,也就是月薪为Top-5的员工。查询返回的结果如下:

目前只有Oracle、Microsoft SQL Server以及PostgreSQL支持这种标准语法。其中Oracle和PostgreSQL中的OFFSET子句可以省略,默认表示跳过0行记录。

除标准SQL外,还有一种常见的LIMIT子句也可以实现相同的功能,例如:

其中,ORDER BY子句表示按照月薪从高到低进行排序,OFFSET子句表示跳过0行记录,LIMIT子句表示获取前5条记录,也就是月薪为Top-5的员工。MySQL、PostgreSQL以及SQLite实现了这种LIMIT语法。另外,OFFSET子句可以省略,默认表示跳过0行记录。

如果使用Microsoft SQL Server,我们也可以利用TOP关键字实现相同的功能,例如:

其中,ORDER BY子句表示按照月薪从高到低进行排序,TOP(5)表示返回前5条记录。