Hive高階查詢練習01(資料 過程)

2021-10-24 01:53:20 字數 3410 閱讀 3800

一、每個店鋪 top3

有 50w 個京東店鋪,每個顧客訪問任何乙個店鋪的任何乙個商品時,都會產生一條訪問日誌,訪問日誌儲存的表名為 visit,訪客使用者 id 為 user_id,被訪問的店鋪名稱為 shop。

請統計:

資料:u1 a

u2 b

u1 b

u1 a

u3 c

u4 b

u1 a

u2 c

u5 b

u4 b

u6 c

u2 c

u1 a

u2 a

u2 a

u3 a

u5 a

u5 a

u5 a

需求:1.每個店鋪 uv(訪客數)

2.每個店鋪訪問次數 top3 的訪客資訊。輸出店鋪名、訪客 id、訪問次數。

建表以及導資料

create external table visit(

user_id string,

shop string

)row format delimited fields terminated by ' ';

load data local inpath '/root/kb08/hive/homework/jd.txt' into table visit;

1.每個店鋪 uv(訪客數)

查詢語句

select

shop,count(*) sumid

from

visit

group by

shop;

輸出結果:

2.每個店鋪訪問次數 top3 的訪客資訊。輸出店鋪名、訪客 id、訪問次數。

查詢語句

with

ht as (select shop,user_id,count(1) sumid from visit group by shop,user_id),

lt as (select shop,user_id,sumid,row_number() over(partition by shop order by sumid desc) as num from ht)

select shop,user_id,sumid from lt where num<=3

輸出結果

二、求月銷售額和總銷售額

1、資料說明

(1)資料格式

a,01,150

a,01,200

b,01,1000

b,01,800

c,01,250

c,01,220

b,01,6000

a,02,2000

a,02,3000

b,02,1000

b,02,1500

c,02,350

c,02,280

a,03,350

a,03,250

(2)字段含義

店鋪,月份,金額

3、需求

編寫 hive 的 hql 語句求出每個店鋪的當月銷售額和累計到當月的總銷售額

建表及資料匯入

create external table store(

shop string,

month int,

money int

)row format delimited fields terminated by ',';

load data local inpath '/root/kb08/hive/homework/store.txt' into table store

編寫 hive 的 hql 語句求出每個店鋪的當月銷售額和累計到當月的總銷售額

查詢語句

select

t.*,sum(nmoney) over(partition by t.shop order by t.month)

from

(select

shop,month,sum(money) nmoney

from

store

group

shop,month

)t

輸出結果

三、自關聯練習

name,month,pv

a,2015-01,5

a,2015-01,15

b,2015-01,5

a,2015-01,8

b,2015-01,25

a,2015-01,5

a,2015-02,4

a,2015-02,6

b,2015-02,10

b,2015-02,5

a,2015-03,16

a,2015-03,22

b,2015-03,23

b,2015-03,10

b,2015-03,11

資料的字段意義是:

使用者,月份,訪問量

需求:每個使用者截止到每月為止的最大單月訪問次數和累計到該月的總訪問次數。

建表及資料匯入:

create table super(

name string,

month string,

pv int

)row format delimited fields terminated by ','

load data local inpath '/root/kb08/hive/homework/pv.txt' into table super

查詢語句

select

t.name,t.month,t.mmax_pv,sum(smax_pv) over(partition by t.name order by t.month) max_pv

from(

select

name,month,max(pv) mmax_pv,sum(pv) smax_pv

from

super

group by

name,month

)t

輸出結果

Hive高階查詢練習02

一 求每一年最大氣溫的那一天 溫度 1 說明 資料格式 2010012325 2014010114 2014010216 2014010317 2014010410 2014010506 2012010609 2012010732 2012010812 2012010919 2012011023 2...

Hive高階查詢

select基礎 cte和巢狀查詢 3 高階語句 4 關聯查詢 mapjoin 1 load移動資料 2 insert表插入資料 使用insert語句將資料插入表 分割槽 insert 支援overwrite覆蓋和into追加 hive支援從同乙個表進行多次插入 insert into中table關...

Hive總結(十二)Hive查詢高階

通過hive提供的order by子句可以讓最終的輸出結果整體有序。但是因為hive是基於hadoop之上的,要生成這種整體有序的結果,就必須強迫hadoop只利用乙個reduce來完成處理。這種方式的 就是回降低效率。如果你不需要最終結果整體有序,你就可以使用sort by子句來進行排序。這種排序...