Hive SQl 學習筆記

2021-10-11 02:19:00 字數 2187 閱讀 4014

排序函式:

需要和over()搭配使用

over() 內常用引數有

分組中位於當前行後n行(lead)/ 前n行(lag)的記錄值

可以用於相鄰間隔問題 

用途:得到分割槽中的第乙個/最後乙個指定引數的值。

select s.sname, c.cname, sc.score,

first_value(sc.score) over (partition by s.sname

order by sc.score desc) as firstval,

last_value(sc.score) over (partition by s.sname

order by sc.score desc) as lastval

from student s inner join score sc on s.sid = sc.sid

inner join course c on sc.cid = c.cid

percent_rank() / cume_dist()

percent_rank()

(rank - 1) / (rows - 1)

cume_dist()

應用場景:班級中某同學成績占前%多少

語法:  

timestampdiff(interval, datetime_expr1, datetime_expr2)

說明:  

返回日期或日期時間表示式datetime_expr1 和datetime_expr2the 之間的整數差。其結果的單位由interval 引數給出。interval 的法定值同timestampadd()函式說明中所列出的相同。  

datediff()

dateadd()

說明:datediff函式計算兩個日期之間的小時、天、周、月、年等時間間隔總數。dateadd函式計算乙個日期通過給時間間隔加減來獲得乙個新的日期

now()

返回當前時間

mysql> select timestampdiff(month,'2009-12-01','2009-09-01');  

-> -3  

mysql> select timestampdiff(year,'2009-05-01','2008-01-01');  

-> -1

unix_timestamp函式1、unix_timestamp():若無引數呼叫,則返回乙個 unix timestamp ('1970-01-01 00:00:00' gmt 之後的秒數) 作為無符號整數,得到當前時間戳 

2、unix_timestamp(date):若用date 來呼叫 unix_timestamp(),它會將引數值以'1970-01-01 00:00:00' gmt後的秒數的形式返回。date 可以是乙個 date 字串、乙個 datetime字串、乙個 timestamp或乙個當地時間的yymmdd 或yyymmdd格式的數字。

1. 場景1:分組求top 

2.行/列轉換

Hive SQL學習筆記

hadoop 學習hive sql之前,要先了解hadoop。hadoop是乙個分布式系統的基礎框架,其核心部分是 分布式檔案系統hdfs hadoop distributed file system 和mapreduce。hdfs用於儲存海量資料 mapreduce用於計算海量資料,但是學習map...

hadoop學習筆記之HiveSQL 資料查詢

資料查詢 select all distinct select expr,from table reference where where condition group by col list cluster by col list distribute by col list sort by c...

hive sql優化整理

hive sql優化方法引數一些整理,方便快速查詢使用 1.map數量與reduce數量的控制 輸入檔案大小指實際檔案大小,與檔案格式textfile,orc等無關,壓縮的檔案格式會小很多設定引數要適當調整 map數量控制 set hive.input.format org.apache.hadoo...