Hive count,sum 使用與擴充套件

2021-10-14 00:22:12 字數 1843 閱讀 4827

table: user_action_in_market

字段:user 、gender、shop_list、buy、cost、dt

字段分別代表購買使用者,使用者性別(f,m),使用者購買商品列表(逗號分割 a,b,c...),是否購買(true, false),花費(¥)與日期(dt),若沒有購買則購買商品列表為空

count,sum都是統計彙總函式,相同點都是用來求和

=> count 一般用於統計行數,例如統計一天一共有多少人來逛街:

hive -e "select count(*) from user_action_in_market where dt = '20210101'";
=> sum 一般用於統計某一列的總和,例如統計一天一共收入多少錢:

hive -e "select sum(cost) from user_action_in_market where dt = '20210101'";
count,sum除了上面最基礎的用法外,還可以結合 case ,if,distinct,size,split 等進行更複雜的統計運算

sum 巢狀 if 的形式,便於非數字型字段進行統計

hive -e "

select user,gender,sum(if(buy='true',1,0)) as buy,sum(if(buy='false',1,0)) as no_buy from user_action_in_market

where dt betweent $st and $end group by user,gender

"

這裡其實也可以用下述語句代替:

hive -e"

select count(distinct(user)) from user_action_in_market

where dt betweent $st and $end

and buy = 'true'

";

不過本著可擴充套件性與count(distinct(*))的效能低於group by,更推薦上面一種寫法。

通過 count 與 distinct 結合計算使用者乙個月內到店的頻率,將使用者區分為常來與偶爾來。

hive -e "

select user,

case when count(distinct dt)>=15 then 'high'

when count(distinct dt) >= 5 and count(distinct dt) < 15 then 'middle'

when count(distinct dt) >= 1 and count(distinct dt) < 5 then 'low'

else 'none'

end as shop_freq

from user_action_in_market

where dt betweent $st and $end

group by user

";

通過split,size 結合 sum,就能統計使用者一段時間內在商場的購物總數,可以檢視使用者的購買力。

hive -e "

select user,

sum(size(split(shop_list,','))) as allshopnum

from user_action_in_market

where dt between $st and $end

group by user

";

Wget 的使用 與 使用技巧

在環境變數中設定 在 wgetrc中設定 ftp proxy http proxy.yoyodyne.com 各種選項分類列表 呵呵,等吧!下完了,發覺有些不對勁,怎麼出來個10.8.8.8的目錄,進去看看,又是乙個movie,哦,wget將目錄結構和 標題都給記錄下來了,不要?沒有問題!比如說還是...

gitee使用svn Git 介紹與使用

git是乙個開源的分布式版本控制系統,可以有效 高速地處理從很小到非常大的專案版本管理。git是linus torvalds為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。版本控制最主要的功能就是追蹤檔案的變更。它將什麼時候 什麼人更改了檔案的什麼內容等資訊忠實地了已錄下來。...

linux vi與vim使用與區別

vi與vim區別 vi模式 vim模式 插入模式 insert mode 命令模式 command mode 可視模式 visual mode vim filename 開啟filename檔案 w vpser.net 儲存至vpser.net檔案 q 退出編輯器,如果檔案已修改請使用下面的命令 q...