Hive學習(一)group by 報錯

2021-09-13 11:20:28 字數 2309 閱讀 4372

create table dm_order_2018(

id string comment '訂單id',

order_money double comment '訂單金額',

member_id int comment '會員id',

create_time timestamp comment '建立時間',

status int comment '訂單狀態'

)row format delimited fields terminated by '\t';

從本地匯入資料

a001    100.15    1    2018-01-01 13:23:12    2

a023    100.15    1    2018-01-01 15:23:12    2

a002    100    2    2018-04-01 14:23:12    2

a003    12.1    3    2018-01-01 13:23:12    2

a004    200.15    4    2018-01-01 13:23:12    2

a005    1200.15    5    2018-01-01 13:23:12    2

a006    0.15    11    2018-01-01 17:23:12    2

a007    1215.1    31    2018-01-01 10:23:12    2

a008    100.75    15    2018-01-01 14:23:12    2

a009    100.15    8    2018-01-01 15:23:12    2

a010    20.15    9    2018-01-01 16:23:12    2

a011    110.15    21    2018-01-01 14:23:12    2

a012    1.15    13    2018-01-01 13:03:12    2

a013    20.15    14    2018-02-01 13:53:12    2

a014    30.15    15    2018-03-01 13:23:12    2

a015    40.5    13    2018-01-01 13:23:12    2

a016    65    1    2017-01-01 13:23:12    2

a017    78.15    1    2017-03-01 09:23:12    1

a018    88.15    1    2017-11-01 20:23:12    2

a019    99    12    2018-02-11 13:23:12    1

a020    10.3    13    2018-04-01 13:23:12    2

a021    600    5    2018-11-01 08:58:31    2

a022    500    31    2018-11-11 08:59:02    2

路徑是存放資料的位置

load data local inpath '/home/hadoop/input/order_2018_data.txt' into table dm_order_2018 partition(dt='2019-01-01');
select * from dm_order_2018 

group by member_id 

order by order_memoy desc;

原因:

group by字句中,select查詢的列,要麼需要時group by中的列,要麼得是聚合函式(sum,count)。不支援直接引用非group by的列。**這點和mysql有區別**。

解決:使用視窗函式

select * from

(select id, order_money, member_id, create_time,

row_number() over(partition by member_id order by order_money desc)as row_num 

from dm_order_2018

)t;

select collect_set(id) from dm_order_2018 group by member_id;

hive之group by相關技巧

在使用hive進行分組查詢時,疑惑的一些地方進行驗證,特此記錄,也希望能給大家帶來一點幫助!hive進行分組查詢時,select多個字段,則也需要按該多個字段進行分組,例 selectyear,id type count 1 from tablename where 條件 group by year...

INSERT 報 不是Group by 表示式

今天在插入資料時,發下如下sql 死活報錯 insert into test select psnid,sum f1 from psn inner join select max year lastyear,psnid from wagedata t group by psnid tmp on ps...

Hive高階聚合函式 group by擴充套件

目錄 指定多種聚合的維度 層次,對多個group by union all進行替換 簡化 可實現從右到左遞減多級的統計,顯示統計某一層次結構的聚合 可以實現多個任意維度的查詢,會統計所選列中值的所有組合的聚合 按照一定規則給統計的各維度組合打標,並返回標識值。1.group by擴充套件 group...