sql升序和降序排列(sql排序规则)
在这一节我来讲Excel中如何通过SQL语句对数据进行排序。在Excel中如何使用SQL和SQL的初级语法见我前面的两篇文章,有问题的地方可以在评论区直接问我。本文的所有SQL都是基于下表进行操作的
学生信息表
在SQL中,一般需要用到排序,例如将上表的数据按照年龄或身高升序进行排序,即全局排序;或将年龄相同的记录按照降序排序,即局部排序。
一. 全局排序
全局排序通过ORDER BY和ASC、DESC就可以实现了。其语法如下
SELECT 列名 FROM 表名 ORDER BY 列名 ASC;
ASC表示升序,DESC表示降序。例如对所有数据按照年龄进行升序排序,SQL语句如下
SELECT * FROM [学生信息表$] ORDER BY 年龄 ASC;
执行结果如下
如果需要按多列进行排序呢? 比如按身高进行全局升序排序,如果身高相同就按年龄进行降序,SQL语句如下
SELECT * FROM [学生信息表$] ORDER BY 身高 ASC, 年龄 DESC;
这样执行结果如下
如果列数更多,以此类推。
二. 局部排序
有时候,我们需要将数据按某列进行分组,然后每一个分组内部按照某个字段进行排序。
由于在Excel的SQL中貌似不支持RANK() OVER(PARTITION BY 性别 ORDER BY 身高 DESC)这样的操作,但通过ORDER BY 列名1 ASC, 列名2 DESC这样的语句同样可以达到目的。例如将相同性别的学生进行分组,每个组内按身高进行降序排序,SQL语句可以这样写
SELECT * FROM [学生信息表$] ORDER BY 性别 ASC, 身高 DESC;
因为先按性别排序就完成了分组,然后再按身高降序排序就是需要的结果。执行结果如下
学会上面的排序方法,在Excel中基本上能满足所有排序的需求了。
赞 (0)