Hive 連續幾日的計算邏輯

2021-09-27 02:23:29 字數 1523 閱讀 5999

1.問題

計算員工日銷量大於500元的連續天數。

2.解決

2.1 思路

step1:對全量資料排序,得到序號rn1;

step2:對滿足條件的資料排序,得到序號rn2;

step3:求兩個序號的差值,即rn1-rn2(若為連續,則為等差,且差值相等);

step4:group by 序號的差值,得到連續天數;

2.2 **

select 

emp_no,

sale,

busi_date,

flag,

-- 計算連續天數

count(rn_diff)over(partition by emp_no, flag, rn_diff) as days

from(

select

emp_no,

sale,

busi_date,

flag,

-- 對sale滿足條件的重新排序,並求其與原始排序的差值(若為連續,兩次排序之間的差值應該相等)

case when flag=1 then rn1 - row_number()over(partition by emp_no, flag order by busi_date) else null end as rn_diff

from(

select

emp_no,

sale,

busi_date,

case when sale>500 then 1 else 0 end as flag, --條件:sale>500的連續天數

row_number() over(partition by emp_no order by busi_date) as raw_rn --原始排序

-- 生成測試資料

hive實現連續N天登入使用者計算

三 計算連續7天的使用者列表 四 按照連續登入天數分組檢視使用者分布總結無 無具體hive是什麼,能幹啥,本文不做過多闡述,具體可以檢視 aapache hive 的官方使用者文件。假設有表 tmp user login 分割槽表記錄使用者每天的登入資訊,有欄位user id,last day,分割...

日期計算 計算某一年的x天是幾月幾日

問題描述 給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年 閏年條件 年份是4的倍數,而不是100倍數 或者年份是400的倍數 輸入格式 輸入的第一行包括乙個整數y表示年份,年份在1900到2015年 輸入的第二行包含乙個整數d,d在1至365之間 輸出格式 輸出兩行,每行乙個整數,...

hive上連續登入天數的查詢

1 資料測試表及測試資料 測試表表結構 hive desc data room okroomid string pt month string pt day string partition information col name data type comment pt month string...