Hive中常用SQL梳理

2021-09-10 17:34:17 字數 754 閱讀 1409

注意:hive子查詢需要起別名!!!

先groupby後取第一條:

方法1:

遇到這麼乙個需求,輸入資料為乙個id對應多個name,要求輸出資料為id是唯一的,name隨便取乙個就可以。

select a.* from (select row_number() over (partition by id order by name desc) row_num from table_name) a where a.row_num=1;
方法二:

select id,collect_set(name)[0] from table_name group by id;
先groupby後取top k:
select a.* from (select row_number() over (partition by id order by name desc) row_num from table_name) a where a.row_num取非groupby的字段:

hive不允許直接訪問非group by欄位;

對於非group by欄位,可以用hive的collect_set函式收集這些字段,返回乙個陣列;

使用數字下標,可以直接訪問陣列中的元素;

select id,collect_set(name)[0] from table_name group by id;

hive中常用的函式

獲取當前時間戳 hive select unix timestamp ok1605712071獲取指定日期時間戳 hive select unix timestamp 2020 01 01 00 00 00 ok1577836800獲取指定格式的時間戳 hive select unix timest...

整理hive中常用函式

1.unix timestamp 返回當前或指定時間的時間戳 select unix timestamp select unix timestamp 2008 08 08 08 08 08 2.from unixtime 將時間戳轉為日期格式 select from unixtime 1218182...

Hive 知識梳理

1 order by,sort by,distribute by,cluster by 背景表結構 在講解中我們需要貫串乙個 例子,所以需要設計乙個情景,對應 還要有乙個表結構和填充資料。如下 有 3 個字段,分別為 personid 標識某乙個人,company 標識一家公司名稱,money 標識...