![对比Excel,轻松学习SQL数据分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/946/32435946/b_32435946.jpg)
5.6 对结果进行排序
对结果进行排序也是我们经常会执行的操作,我们来看一下在Excel中和在SQL中分别是怎么实现的。
1. Excel实现
在Excel中,我们要想将结果按照某一列进行排序,实现方法与数据筛选类似,先给所有的表头加上筛选,然后单击下拉箭头就会弹出“升序”“降序”“按颜色排序”三种排序方式。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-076-2.jpg?sign=1739282530-HPAYdk7Y0z0dXs9pG2tW17MqSMl0beLT-0-0f5ed30d55135df53778f1f736ea1775)
上述方法只是对一列进行排序,有时候,我们还会有同时按照多列进行排序的需求,这个时候就要用到“自定义排序”的方式了。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-076-3.jpg?sign=1739282530-gSdd55C1HGqr5ODPt0XEZHprYrV64j4m-0-c605f640bb918825e9ee474f56901574)
“自定义排序”在“排序和筛选”下拉列表中,通过自定义排序可以按照多行或多列进行排序。比如,我们要同时按照class列和age列进行排序,且先按照class列进行排序,如果class列相同,则再按照age列进行排序,这个时候class列就是主要关键字,age列就是次要关键字,用户可以分别指明不同列是按照升序排列还是按照降序排列。如果用户还需要按照其他列进行排序,只需要单击左上角的“添加条件”按钮即可。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-077-1.jpg?sign=1739282530-DGT1ZNLhg3IZf9A54eyV1TLWCTVjJgIM-0-150c9e2b615c3a947b2b49ff69176426)
2. SQL实现
在SQL中,我们要想将结果列按照某列进行排序,需要借助order by来实现,比如,我们要将chapter5表按照age列进行升序排列,具体实现代码如下:
select * from demo.chapter5 order by age
运行上面的代码,具体运行结果如下表所示。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-077-2.jpg?sign=1739282530-pzrQO98vsafARolOj6jWPdOV1OiUUsQE-0-98a0c7dc0363ec76900b76dfd53f7a9e)
我们可以看到上面代码运行的结果是按照age列进行升序排列的,这是order by默认的排序方式,如果我们想按照age列进行降序排列,则可以在age后面加一个desc,表明降序排列,具体实现代码如下:
select * from demo.chapter5 order by age desc
运行上面的代码,具体运行结果如下表所示。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-078-1.jpg?sign=1739282530-rwZgIbjtpplBXvmjtztMaQTVoHtAzQ16-0-9af7b50e143bf73dbff8b266e314e28a)
与desc相对应的是asc,表示升序排列,order by默认的是升序排列,所以当我们对数据进行升序排列时,一般省略不写。
如果我们在SQL中也想按照多列进行排序,那么只需要在order by后面指明要排序的多个列以及每个列对应的排序方式即可,比如,我们要对chapter5表中的class列进行升序排列,对age列进行降序排列,具体实现代码如下:
select * from demo.chapter5 order by class asc ,age desc
运行上面的代码,具体运行结果如下表所示。
![](https://epubservercos.yuewen.com/F865C4/17517091706681606/epubprivate/OEBPS/Images/39002-00-078-2.jpg?sign=1739282530-axcrmx46tCKD0wQQYiUJHyrEXBmhKnQj-0-43246ee5d2565f2bf407ddeea2572955)
如果我们要对多个列进行统一的升序排列,则可以直接将多个列名用逗号分隔开,省略排序方式。