在Hive中工作,我有一个包含三列A(INT),B(STRING)和C(STRING)的表。 B& C列具有重复的配对值(即,行1和行10可以在列B和C中具有相同的串)。我试图返回不同B,C对的完整行(即A,B,C),其中A列是所有出现的不同B,C对中的最大值。感谢所有帮助。
输入表的示例
a = [7, 12, 9, 14, 15, 18, 12]
b = [9, 14, 8, 3, 15, 17, 15]
big = []
i = 0
while i < len(a):
big.append(max(a[i], b[i]))
i += 1
查询输出示例
Col1 Col2 Col3
----------------
1111, str1, str2
2222, str1, str2
3333, str3, str4
4444, str5, str6
5555, str3, str4
6666, str5, str6
答案 0 :(得分:2)
如果您只想要结果中的三列:
select max(a) a, b, c
from your_table
group by b, c;
如果要选择更多列,可以使用窗口函数row_number
:
select *
from (
select t.*,
row_number() over (
partition by b, c
order by a desc nulls last
) rn
from your_table t
) t
where rn = 1;