Отображать определенный объем данных для каждого диапазона значений данных в HiveQL - PullRequest
0 голосов
/ 10 февраля 2020

Я новичок ie здесь и новичок ie в HiveQL. Я хотел бы спросить, как отобразить определенный объем данных для каждого диапазона значений данных в HiveQL? Например, у меня есть этот набор данных:

Name    Age
A       34
B       38
C       39
D       35
E       26
F       34
G       34
H       26
I       27
J       27
K       30
L       31
M       42
N       39
O       37
P       22
Q       19
R       20
S       40

И я хотел бы отобразить ТОЛЬКО трех человек в каждой возрастной группе 16-25, 26-35, 36-45 (отобразить их имя + возраст) , А также, если вы не возражаете, не могли бы вы объяснить вкратце о разделе, так как у меня нет хорошего gr asp в этой части.

Большое спасибо!

1 Ответ

0 голосов
/ 10 февраля 2020

Вы можете попробовать что-то вроде этого.

select name,age from 
(select name,age,row_number() over (partition by age_group order by name desc)  as rn
from (select name,age ,case when age between 16 and 25 then 20 when age between 26 and 35 then 30 when age between 36 and 45 then 40 else 0 end as "age_group" from table) t1 where age_group != 0) t2
where rn <=3
group by name,age 

Я разделил возраст по возрастным группам ie 16 - 25 - 20, 26-35 - 30 и так далее. Используемый раздел по age_group и заданный каждой группе разными номерами. В этом случае, если в возрастной группе 20 лет есть 4 записи, то при использовании разбиения по выражению будет дано 1,2,3,4 строки, а для 30 - 3 записи - 1,2,3. И наконец фильтрация строк, имеющих более 3 строк для каждой группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...