按子句排序
適用於:磚的SQL磚運行時
返回在每個分區中按用戶指定順序排序的結果行。當有多個分區時排序通過
可能返回部分有序的結果。這和命令子句,保證輸出的總順序。
語法
排序通過{表達式[sort_directionnulls_sort_oder]}[,...]sort_direction[ASC|12月]nulls_sort_order[零位第一個|零位最後的]
參數
任意類型的表達式,用於建立返回結果的分區局部順序。
如果表達式是字麵INT值,它將被解釋為選擇列表中的列位置。
sort_direction
指定按表達式排序的排序順序。
ASC
:該表達式的排序方向為升序。DESC
:該表達式的排序順序為降序。
如果未顯式指定排序方向,則默認行按升序排序。
nulls_sort_order
可選地指定是否在非NULL值之前/之後返回NULL值。如果
null_sort_order
如果排序順序為ASC
如果排序順序為,則為最後排序DESC
。零位第一個
:不管排序順序如何,先返回NULL值。零位最後的
:無論排序順序如何,最後返回NULL值。
當指定多個表達式時,排序從左到右進行。分區中的所有行都按第一個表達式排序。如果第一個表達式有重複值,則使用第二個表達式解析重複組中的順序,依此類推。如果所有order by表達式中都有重複值,則結果順序不確定。
例子
>創建臨時視圖人(zip_code,的名字,年齡)作為值(94588,“禪回族”,50),(94588,“丹·李”,18),(94588,“阿尼爾K”,27),(94588,“約翰·V”,零),(94511,“大衛·K”,42),(94511,“雅利安人B。”,18),(94511,“拉B。”,零);——使用' REPARTITION '提示將數據通過' zip_code '分區到檢查' SORT BY '行為。這是用在其餘的——的例子。—在每個分區中按“名稱”升序排序>選擇/*+重分區(zip_code) */的名字,年齡,zip_code從人排序通過的名字;阿尼爾K2794588丹李1894588約翰V零94588禪回族5094588雅利安人B。1894511大衛K4294511拉蒂B。零94511——使用列位置對每個分區中的行進行排序。>選擇/*+重分區(zip_code) */的名字,年齡,zip_code從人排序通過1;阿尼爾K2794588丹李1894588約翰V零94588禪回族5094588雅利安人B。1894511大衛K4294511拉蒂B。零94511——以升序方式對分區內的行進行排序,空值保持在最後。>選擇/*+重分區(zip_code) */年齡,的名字,zip_code從人排序通過年齡零位最後的;18丹李9458827阿尼爾K9458850禪回族94588零約翰V9458818雅利安人B。9451142大衛K94511零拉蒂B。94511——在每個分區中按年齡排序,按降序排列,默認為NULL LAST。>選擇/*+重分區(zip_code) */年齡,的名字,zip_code從人排序通過年齡DESC;50禪回族9458827阿尼爾K9458818丹李94588零約翰V9458842大衛K9451118雅利安人B。94511零拉蒂B。94511——在每個分區中按年齡排序,以降序方式保持空值在前麵。>選擇/*+重分區(zip_code) */年齡,的名字,zip_code從人排序通過年齡DESC零位第一個;零約翰V9458850禪回族9458827阿尼爾K9458818丹李94588零拉蒂B。9451142大衛K9451118雅利安人B。94511——基於多個列對每個分區中的行進行排序,每個列具有——不同的排序方向。>選擇/*+重分區(zip_code) */的名字,年齡,zip_code從人排序通過的名字ASC,年齡DESC;阿尼爾K2794588丹李1894588約翰V零94588禪回族5094588雅利安人B。1894511大衛K4294511拉蒂B。零94511