我的目标是在一列上使用 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
这两个命令我都试过了
从示例表中选择不同的 ID、名称、年份。 我将对所有行进行区分。
按 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;
此外,还有其他排名函数,例如用于不同选择的 rank
和 dense_rank
。
关于hadoop - 在一列上选择不同但返回所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327176/