繁体   English   中英

我想从配置单元的多列中找到最高的行

[英]I want to find highest row from multiple columns in hive

a b c
1 1 1
2 2 2
3 3 3
4 4 4
5 5 1

这里有 3 列,我必须在这些列中找到最高的行

结果将是 - 4 4 4

好的,所以我已经通过了这里的智囊团,我们发现这是一个很好的谜题,试图弄清楚它的含义。 另一个建议是 551 与 155 相同,因此 444 高于 155。

我们可以用“最小数、中间数、最大数”将3、1、2变成123。 中间数是所有数的总和减去最大的减去最小的

在这种情况下:

SELECT * FROM table 
ORDER BY 
  LEAST(a,b,c) DESC,
  a+b+c-GREATEST(a,b,c)-LEAST(a,b,c) DESC,
  GREATEST(a,b,c) DESC 
  LIMIT 1

如果您的配置单元没有最大和最小,那么您必须使用 case when伪造它(我建议您使用子查询)

如果“最高行”意味着最大的总和,那么它将是

SELECT * FROM table ORDER BY a+b+c DESC LIMIT 1

如果我理解正确? 不确定您想对重复项做什么? 如果有一行 3 4 5 呢?

select
    a,b,c,(a+b+c)/3
from
    table
where
    (a+b+c)/3 >= (select (avg(a)+avg(b)+avg(c))/3 from table)
and         a >= (select cast(avg(a) as int) from table)
and         b >= (select cast(avg(b) as int) from table)
and         c >= (select cast(avg(c) as int) from table)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM