hive:如何按列选择中间元素顺序

xcitsw88  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(437)

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

  1. Name age
  2. A 10
  3. B 20
  4. C 30

输出: B 20 .

yx2lnoni

yx2lnoni1#

中间的元素是柱的中间部分。有几种方法可以做到这一点。可靠的方法是:

  1. select avg(age)
  2. from (select t.*,
  3. row_number() over (order by age) as seqnum,
  4. count(*) over () as cnt
  5. from t
  6. ) t
  7. where seqnum * 2 in (cnt, cnt + 1, cnt + 2);

这适用于偶数行和奇数行。它确实假设“年龄”是数字(所以 avg() 将工作)。

ffdz8vbo

ffdz8vbo2#

您可以使用分析函数row\u number()和count()找到中间一行,如下所示:

  1. select name, age
  2. from (
  3. select
  4. name,
  5. age,
  6. row_number() over (order by your_order_by_list) r,
  7. count(*) over () c
  8. from
  9. your_table) t
  10. where r = cast((c + 1) / 2 as int);

相关问题