前言
书接上回大数据分析入门10分钟快速了解SQL
本篇将会进一步介绍order by
排序。
基本语法
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC -- 可以按多列排序
LIMIT n; -- 截取排序后的前n项
假设我们有students
表,其中有name
,score
两个字段
- 如果你需要3名分数最高的学生,你可以写
select name, score from students
order by score desc
limit 3
但现实中,成绩可能有并列;score
一样的时候,谁排在前面呢?
- 这个时候,就要引入第二个排序字段
name
了
select name, score from students
order by score desc, name -- score降序、name默认升序
limit 3
进阶用法
SQL中有一种null
值,不同的计算引擎可能排在不同的位置。
以现在大数据分析中最热门的SparkSQL为例
下面按照age
排序,null
在最前面
SELECT age, name FROM person ORDER BY age;
+----+--------+
| age| name|
+----+--------+
|null| Marry|
|null| Albert|
| 18| Mike|
| 30|Michelle|
| 30| Joe|
| 50| Fred|
| 50| Dan|
+----+--------+
可以调整为
SELECT age, name FROM person ORDER BY age NULLS LAST; -- nulls last强制放最后
+----+--------+
| age| name|
+----+--------+
| 18| Mike|
| 30|Michelle|
| 30| Joe|
| 50| Dan|
| 50| Fred|
|null| Marry|
|null| Albert|
+----+--------+
总结
关于order by
,后续还可能在OVER
函数(又叫Window
语法)用到。
欢迎提出你遇到的SQL问题,我会针对地出一些教程解答大家问题的~