NVL:為空值數據賦值。
它的格式是
NVL(string 1,替換為)。
它的功能是,如果string1為NULL,NVL函數將返回replace_with的值,否則它將返回string1的值,如果兩個參數都為NULL,它將返回NULL。
Date_format:格式化時間。
Date_add:時間加天數。
Date_sub:從天數中減去時間,類似於加法。就用壹個。
select date _ sub(‘2019-06-29‘,5);
Datediff:減去兩個時間。
select datediff(‘2019-06-29’,‘2019-06-24’);
concat(String A/Col,String B/Col …):返回輸入字符串串聯的結果,支持任意輸入字符串;
CONCAT _ ws(分隔符,字符串1,字符串2,...):它是concat()的壹種特殊形式。第壹個參數的其余參數之間的分隔符。
分隔符可以是與其余參數相同的字符串。如果分隔符為空,返回值也將為空。
此函數跳過delimiter參數後的任何NULL和空字符串。將在連接的字符串之間添加分隔符;
從XX中選擇concat _ ws(‘-‘,str1,str 2);//str是字符串類型的列名。
COLLECT _ SET(col):該函數只接受基本數據類型,其主要功能是匯總字段的值。
生成數組類型的字段。
鍛煉:將星座和血型相同的人分組。
轉換的第壹步:
白羊座,美猴王
射手座,壹片海
白羊座b宋松
白羊座、豬八戒
射手座,壹座西峰
合並
EXPLODE(col):將壹列hive中的復雜數組或映射結構拆分為多行。
側視圖//剖面圖
用法:橫向視圖udtf(表達式)表別名作為列別名
說明:與UDTF(如split、explode)壹起使用時,它可以將壹列數據拆分為多行,然後匯總拆分的數據。
練習:展開電影分類中的數組數據。
從movie_info中選擇explode(類別);
OVER():指定分析函數工作的數據窗口大小,該大小可能會隨著行的變化而變化;
/in over(用於內部)/
當前行:當前行;
N PRECEDING:轉發n行數據;
N FOLLOWING:接下來的n行數據;
未綁定:起點,
無界在前意味著從前面開始,無界跟隨意味著在後面結束;
/*在室外使用*/
LAG(col,n):向前第n行的數據;
LEAD(col,n):下壹個第n行的數據;
NTILE(n):將有序分區中的行分布到指定數據的組中,每個組都有壹個編號,從1開始。
對於每壹行,NTILE返回該行所屬組的編號。註意:n必須是int類型。
數據:
1.查詢2017年4月購買的客戶和總人數。
Group將壹個值組成壹個組,並在窗口中獨立處理每條數據。
查詢客戶的購買明細和購買總額
按日期累計成本
首先排序
再累積
查詢客戶的最後購買時間。
下次購買時間
查詢前20%時間的訂單信息。
排序相同時RANK()會重復,總數不會改變,所以可以並列。
DENSE_RANK()將在排序相同時重復,總數將減少。
ROW_NUMBER()按順序計算。
練習:計算各科成績排名。
計算每個科目的分數排名