hadoop - 在一列上选择不同但返回所有列

标签 hadoop hive hortonworks-data-platform

我的目标是在一列上使用 distinct 但返回所有列。

我的 table 是这样的

id, name, year

1, John, 2012

2, Jake, 2012

3, Jenna, 2013

1, John, 2013

我需要对 id 列进行区分并返回所有三列以及不同的 id,我需要最近的记录。

我需要的输出是

id, name, year

1, John, 2013

2, Jake, 2012

3, Jenna, 2013

这两个命令我都试过了

  1. 从示例表中选择不同的 ID、名称、年份。 我将对所有行进行区分。

  2. 按 id 从示例表组中选择 * 我将只返回 id 列并删除其他列。

最佳答案

使用开窗和分析函数,您可以按按年份排序的 id 对数据进行分区,并选择第一个结果:

SELECT id, name, year
FROM 
 (SELECT id, name, year, row_number() over (partition by id order by year desc) as r 
  FROM sampletable) S 
WHERE S.r = 1;

此外,还有其他排名函数,例如用于不同选择的 rankdense_rank

关于hadoop - 在一列上选择不同但返回所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327176/

相关文章:

hadoop - Pig 脚本中的 SUM 函数

streaming - hadoop-streaming 示例运行失败 - 映射中的键类型不匹配

mongodb - 所有NoSQL框架都使用Hadoop文件系统吗?

mysql - Sqoop Import --password-file 函数在 sqoop 1.4.4 中无法正常工作

hive - DROP PARTITION 是否从 HIVE 中的外部表中删除数据?

hadoop - Ambari 中数据库在安装 HDP 中的作用?

google-compute-engine - 无法在实例上启用 http 流量

hadoop - 如何使用Pig在hbase中加载数据

sql - hive group-by 处理空值

hadoop - 仅在 "-Dorg.apache.sqoop.splitter.allow_text_splitter=true"属性作为参数传递的情况下才允许为文本索引列生成拆分