我有一个表结构在Hive如下-
create table if not exists cdp_compl_status
(
EmpNo INT,
RoleCapability STRING,
EmpPUCode STRING,
SBUCode STRING,
CertificationCode STRING,
CertificationTitle STRING,
Competency STRING,
Certification_Type STRING,
Certification_Group STRING,
Contact_Based_Program_Y_N STRING,
ExamDate DATE,
Onsite_Offshore STRING,
AttendedStatus STRING,
Marks INT,
Result STRING,
Status STRING,
txtPlanCategory STRING,
SkillID1 INT,
Complexity STRING
)
CLUSTERED BY (Marks) INTO 5 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
TBLPROPERTIES('created on' = '12 Aug');
现在,我想从表中的每个bucket中查询max(marks)。如果我这样做了-
SELECT MAX(MARKS) from cdp_compl_status;
它显示了整个表的最大分数。有什么办法,我能查出来吗 MAX(MARKS)
从每个桶里?
2条答案
按热度按时间jk9hmnmh1#
你把table分成5个桶。。。根据%函数将数据拆分为存储桶,例如:
marks%5==0
进入第一个铲斗marks%5==1
进入第二个铲斗marks%5==2
进入第三个铲斗marks%5==3
进入第四个铲斗marks%5==4
进入第5个铲斗所以你需要写5个这样的查询:
Select max(marks) from cdp_compl_status where marks%5=0;
--第一桶最大值我想这应该可以。
fquxozlt2#
使用表示例: