如果在Excel中,有个数据集有10000行,要选择第10行到第200行的记录,你会怎么做呢?
你可能会说,用鼠标加眼睛去看行数,把结果选择出来。现在我说一种方法,你可以去试试,我之后介绍用SQL选取指定的行记录,用的就是这种思想,所以你有必要先理解在Excel里面怎么做。
假设我已经有一个数据集有10000行,我现在为这个数据集添加一列,叫做【index】,为它自动填充从1到10000,然后使用Excel的筛选功能,选择【index】列中数值在10和200之间的记录,这样我就得到了我所需要的数据集。
接下来我们看一下在SQL中的实现,下图是需要提取的数据集的一部分:
我这里在PostgreSQL中进行演示,同时也会给出适用于其它数据库系统的SQL代码,它们之间略有不同,但道理都是一样的。先执行如下的SQL语句:
SELECT ROW_NUMBER OVER AS rownum ,* FROM 订单
发现执行后数据集添加了一个新的数据列【rownum】,也就是行数。
再用一次带条件的select语句即可选出我们需要的内容:
-- postgresql
SELECT * FROM
(SELECT ROW_NUMBER OVER AS rownum ,* FROM 订单) order_table
WHERE (rownum >= 10 AND rownum <= 200);
在Oracle或者其它的关系型数据库中,实现这一做法的SQL语句更加的简单也更加容易理解,相关语句如下:
--oracle
SELECT
*
FROM
(SELECT rownum ,* FROM 订单)
WHERE
(rownum >= 10 AND rownum <= 200);
点击阅读原文可试听松鼠的《MySQL数据分析》课程