遇到以下問題如何解決?
查詢客戶各個日期的歷史累積購買金額
查詢每個客戶第一次(首購)或前n次購買記錄
查詢每個客戶最後一次購買記錄
某活動推廣後,每天的累積資料
查詢客戶每天的歷史累積購買金額
hive 語法:
select
userid user_id,
pay_datekey pay_datekey,
pay_amount pay_amount,
sum(pay_amount) over (partition by userid order by pay_datekey rows betweenunbounded preceding and current row ) accumulate_pay_amount
from
order_table
over(partition by column rows between ..)
rows ((current row) | (unbounded | [num]) preceding) and (unbounded | [num]) following
preceding:往前
following:往後
current row:當前行
unbounded:起點,unbounded preceding 表示從前面的起點, unbounded
following:表示到後面的終點
如果不指定rows between,預設為從起點到當前值
sum(pay_amount) over (partition by userid order by pay_datekey rows between 2 preceding and 0 following)
除了可以計算到當前行的sum聚合函式之外,還支援以下 標準聚合函式
比如計算:截止某天歷史平均購買交易額、最小購買金額等。
為每一行加乙個序號
row_number()
rank()
dense_rank()
percent_rank() 分組內當前行的rank值-1/分組內總行數-1
ntile(n) 將資料集分成 n片,返回分片號
cume_dist 小於等於當前值的行數和分組內總行數的比值
效果
select
user_id,
pay_datekey,
pay_amount,
row_number() over (partition by userid order by pay_datekey asc)
row_number,
rank() over (partition by userid order by pay_datekey asc) rank, dense_rank() over (partition by userid order by pay_datekey asc) dense_rank, percent_rank() over (partition by userid order by pay_datekey asc)
percent_rank,
ntile(2) over (partition by userid order by pay_datekey asc) ntile
from
order_detail
lag(col,n,default) 用於統計視窗內往上第n行值 第乙個引數為列名,第二個引數為往上第n行(可選,預設為1),第三個引數為預設值
(當往上第n行為null時候,取預設值,如不指定,則為null)
與lag相反,lead(col,n,default) 用於統計視窗內往下第n行值. 第乙個引數為列名,第二個引數為往下第n行(可選,預設為1),第三個引數為預設值
(當往下第n行為null時候,取預設值,如不指定,則為null
取分組內排序後,第乙個值.應用場景,如求第一次購買日期。
取分組內排序後,最後乙個值.應用場景,如求第一次購買日期
分析函式hive計算均值 Hive 分析函式
應用場景 1 用於分割槽排序 2 top n 3 層次查詢 常用分析函式 分析函式 描述 rank 返回資料項在分割槽中的排名。排名值序列可能會有間隔 dense rank 返回資料項在分割槽中的排名。排名值序列是連續的,沒有間隔 percent rank 計算當前行的百分比排名 x 1 視窗分割槽...
Hive的分析函式
記錄下hive的常用函式 hive的常用函式和平常我們使用的關係型資料庫基本都差不多,這裡只是記錄一下,方便後面回顧。準備測試資料.hadoop hadoop apache hive 0.13.1 bin cat emp.txt 7369 smith clerk 7902 1980 12 17 80...
hive的分析函式
1 rollup group by 的增強函式 實現根據部門號 工作職位求工資總和,根據部門求工資總和,查所有人的工資總和 通過group by 語句的增加來實現 select deptno,job,sum sal from emp group by rollup deptno,job 語法 gro...