阿里雲大數據ACP認證知識點梳理6——基礎SQL語句(內建函數、窗口函數規則、隱式轉換規則)

abs(null)=null
abs(-1)=1
abs(-1.2)=1.2
abs("-2")=2.0
abs(122320837456298376592387456923748)=1.2232083745629837e32

注:當number爲Double、Bigint或Decimal類型時。輸入爲Bigint,返回Bigint。輸入爲Double,返回Double類型。輸入爲Decimal,返回Decimal類型。若輸入爲String類型,會隱式轉換爲Double類型後參與運算,其它類型拋異常。若輸入爲null,則返回null。

ceil(1.1)=2
ceil(-1.1)=-1

注:向上取整,函數返回不小於輸入值value的最小整數。Double類型或Decimal類型,若輸入爲String類型或Bigint類型,會隱式轉換到Double類型後參與運算,其他類型拋異常。返回Bigint類型。任意一個參數輸入爲null,則返回null。

floor(1.2)=1
floor(1.9)=1
floor(0.1)=0
floor(-1.2)=-2
floor(-0.1)=-1
floor(0.0)=0
floor(-0.0)=0

注:向下取整,函數返回不大於number的最大整數值。Double類型或Decimal類型,若輸入爲String類型或Bigint類型,會隱式轉換爲Double類型後參與運算,其他類型拋異常。返回Bigint類型。若number爲null,則返回null。

select rand() from dual;
select rand(1) from dual;

注:該函數以seed爲種子,返回Double類型的隨機數,返回值區間是的0~1。可選參數,Bigint類型,隨機數種子,決定隨機數序列的起始值。返回Double類型

round(125.315)=125.0
round(125.315, 0)=125.0
round(125.315, 1)=125.3
round(125.315, 2)=125.32
round(125.315, 3)=125.315
round(-125.315, 2)=-125.32
round(123.345, -2)=100.0
round(null)=null
round(123.345, 4)=123.345
round(123.345, -4)=0.0

注:Double類型或Decimal類型。若輸入爲String類型或Bigint類型,會隱式轉換爲Double類型後參與運算,其他類型拋異常。四捨五入計算到小數點後的位置,其他類型參數會引發異常。如果省略表示四捨五入到個位數,默認值爲0。返回Double類型或Decimal類型。若number或Decimal_places爲null,則返回null。負數會從小數點向左開始計數,並且不保留小數部分。如果Decimal_places超過了整數部分長度,返回0。

窗口函數

MaxCompute SQL中可以使用窗口函數進行靈活的分析處理工作,窗口函數只能出現在select子句中,窗口函數中不要嵌套使用窗口函數和聚合函數,窗口函數不可以和同級別的聚合函數一起使用。

目前在一個MaxCompute SQL語句中,最多可以使用5個窗口函數。

window_func() over (partition by [col1,col2…]
[order by [col1[asc|desc], col2[asc|desc]…]] windowing_clause)

注:語法聲明格式。

select deptno, ename, sal, dense_rank() over (partition by deptno order by sal desc) as nums;
注:將所有職工根據部門分組,每個組內根據SAL做降序排序,獲得職工自己組內的序號。

count語句

select user_id,count(user_id) over (partition by user_id) as count
from test_src;

注:該函數用於計算計數值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章