order by

详情

根据order by指定的列,对结果排序。

用法

order by col [asc | desc] [nulls first | nulls last] 

其中:

  • [asc | desc] 指定按升序或降序对数据进行排序。若不指定,则默认为升序。

  • [nulls first | nulls last] 指定空值放在排序查询结果的最前面或最后面。

  • 在查询分布式表时,不支持对 col 使用序列函数和自定义函数。
注: 指定 nulls first/last 时,必须要指定 asc/desc。

例子

sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL
price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
t1 = table(timestamp, sym, qty, price);
t1;
timestamp sym qty price
09:34:07 C 2200 49.6
09:36:42 MS 1900 29.46
09:36:51 MS 2100 29.52
09:36:59 MS 3200 30.02
09:32:47 IBM 6800 174.97
09:35:26 IBM 5400 175.23
09:34:16 C 1300 50.76
09:34:26 C 2500 50.32
09:38:12 C 8800 51.29
select * from t1 order by sym, timestamp;
timestamp sym qty price
09:34:07 C 2200 49.6
09:34:16 C 1300 50.76
09:34:26 C 2500 50.32
09:38:12 C 8800 51.29
09:32:47 IBM 6800 174.97
09:35:26 IBM 5400 175.23
09:36:42 MS 1900 29.46
09:36:51 MS 2100 29.52
09:36:59 MS 3200 30.02

可使用"desc"关键字进行降序排序。

select * from t1 where sym in `C`IBM order by sym, timestamp desc;
timestamp sym qty price
09:38:12 C 8800 51.29
09:34:26 C 2500 50.32
09:34:16 C 1300 50.76
09:34:07 C 2200 49.6
09:35:26 IBM 5400 175.23
09:32:47 IBM 6800 174.97
t = table(5 3 NULL NULL 1 6 8 as id, 1 2 3 4 5 6 7 as val)
select * from t order by id asc nulls last
id val
1 5
3 2
5 1
6 6
8 7
3
4
t = table(5 3 NULL NULL 1 6 8 as id, 1 2 3 4 5 6 7 as val)
select * from t order by id asc nulls first
id val
3
4
1 5
3 2
5 1
6 6
8 7