繁体   English   中英

SQL:如何在 Redshift 中选择具有最大值的列?

[英]SQL: How to select COLUMN with max value in Redshift?

如何在 Redshift 表中提取一行的最大列? 例如,我的行之一是:value1、value2、value3、value4、value5 100、56、516、1000、516

我想看到 value4: 1000 结果?

谢谢

在 Redshift 中,您可以使用greatest()

select t.*, greatest(value1, value2, value3, value4) as greatest_value
from mytable t

请注意, greatest() (以及least() )忽略null值; 另一方面,如果所有值都为null ,则结果为null

如果要确定最大值来自哪一列,请使用case表达式:

select t.*, greatest(value1, value2, value3, value4) as greatest_value,
    case greatest(value1, value2, value3, value4)
        when value1 then 'value1'
        when value2 then 'value2'
        when value3 then 'value3'
        when value4 then 'value4'
    end as greatest_column
from mytable t

领带在这里是一个边缘情况; 您没有在该事件中指定您想要的逻辑,因此:上面的查询获取第一个顶部联系列,如case表达式中分支的顺序所定义的。

暂无
暂无

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

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