Hive:如何通过某些列选择中间元素顺序

时间:2017-01-05 13:20:22

标签: sql hive emr

选择某个列排序的中间元素的配置单元查询是什么。

示例:

Name      age
A          10
B          20
C          30

输出:B 20

2 个答案:

答案 0 :(得分:2)

您可以使用分析函数row_number()和count()来查找中间行,如下所示:

select name, age
from (
select
    name,
    age,
    row_number() over (order by your_order_by_list) r,
    count(*) over () c
from
    your_table) t
where r = cast((c + 1) / 2 as int);

答案 1 :(得分:1)

中间元素是列的中位数。有几种方法可以做到这一点。一个可靠的方法是:

json

这适用于偶数行和奇数行。它确实假设“年龄”是数字(因此requests将起作用)。