
# SORT BY
#### 功能描述
SORT BY子句用于在每个Reducer内对数据进行局部排序。与ORDER BY的全局排序不同，SORT BY只保证每个Reducer内的数据有序。
#### 语法格式
```
SELECT projectItem [, ...] FROM
  table_reference SORT BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] } [, ...]
```
#### 参数说明
| 参数          | 说明                |
|:---|:---|
| expression  | 排序表达式，可以是列名或表达式。  |
| ASC         | 升序排序，为默认选项。       |
| DESC        | 降序排序。             |
| NULLS FIRST | 将NULL值排在排序结果的最前面。 |
| NULLS LAST  | 将NULL值排在排序结果的最后面。 |
   
#### 注意事项
- SORT BY是局部排序，仅保证每个Reducer内的数据有序，不保证全局有序。
- 如需全局排序，请使用ORDER BY。
- SORT BY通常与DISTRIBUTE BY配合使用，先分桶再桶内排序。
- SORT BY支持NULLS FIRST/LAST指定NULL值的排序位置。
 
#### 示例
按score在Reducer内升序排序：
```
SELECT * FROM student SORT BY score;
```
按score在Reducer内降序排序：
```
SELECT * FROM student SORT BY score DESC;
```
与DISTRIBUTE BY配合使用：
```
SELECT * FROM student DISTRIBUTE BY class_id SORT BY score DESC;
```
多字段排序并指定NULL值位置：
```
SELECT * FROM student SORT BY class_id ASC NULLS LAST, score DESC NULLS LAST;
```
