对比Excel,轻松学习SQL数据分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.6 对结果进行排序

对结果进行排序也是我们经常会执行的操作,我们来看一下在Excel中和在SQL中分别是怎么实现的。

1. Excel实现

在Excel中,我们要想将结果按照某一列进行排序,实现方法与数据筛选类似,先给所有的表头加上筛选,然后单击下拉箭头就会弹出“升序”“降序”“按颜色排序”三种排序方式。

上述方法只是对一列进行排序,有时候,我们还会有同时按照多列进行排序的需求,这个时候就要用到“自定义排序”的方式了。

“自定义排序”在“排序和筛选”下拉列表中,通过自定义排序可以按照多行或多列进行排序。比如,我们要同时按照class列和age列进行排序,且先按照class列进行排序,如果class列相同,则再按照age列进行排序,这个时候class列就是主要关键字,age列就是次要关键字,用户可以分别指明不同列是按照升序排列还是按照降序排列。如果用户还需要按照其他列进行排序,只需要单击左上角的“添加条件”按钮即可。

2. SQL实现

在SQL中,我们要想将结果列按照某列进行排序,需要借助order by来实现,比如,我们要将chapter5表按照age列进行升序排列,具体实现代码如下:

select
   *
from
   demo.chapter5
order by age

运行上面的代码,具体运行结果如下表所示。

我们可以看到上面代码运行的结果是按照age列进行升序排列的,这是order by默认的排序方式,如果我们想按照age列进行降序排列,则可以在age后面加一个desc,表明降序排列,具体实现代码如下:

select
   *
from
   demo.chapter5
order by age desc

运行上面的代码,具体运行结果如下表所示。

与desc相对应的是asc,表示升序排列,order by默认的是升序排列,所以当我们对数据进行升序排列时,一般省略不写。

如果我们在SQL中也想按照多列进行排序,那么只需要在order by后面指明要排序的多个列以及每个列对应的排序方式即可,比如,我们要对chapter5表中的class列进行升序排列,对age列进行降序排列,具体实现代码如下:

select
   *
from
   demo.chapter5
order by class asc
       ,age desc

运行上面的代码,具体运行结果如下表所示。

如果我们要对多个列进行统一的升序排列,则可以直接将多个列名用逗号分隔开,省略排序方式。