如何在 presto 中的两个值之间取最大值?



我有以下查询:

select id, table1.date1, table2.date2, table1.name
from table1
join table2 using (id)

我还想有另一列带有MAX(table1.date1, table2.date2)但我找不到正确的语法。我不希望 MAX 遍历表中的所有行并采用 MAX((,我希望它从行中指定的两个值中选择 max。

例:

id  date1       date2    name    max
1 2020-01-01 2020-04-01   A    2020-04-01
2 2019-02-01 2020-01-03   B    2020-01-03
3 2019-02-01    null      c    2019-02-01

我也不能按方式分组,因为我不想在这里对任何东西进行分组。 它更类似于coalesce给出一个值的函数列表并从中选择最大值

使用greatest()

select id, t1.date1, t2.date2, t1.name,
greatest(t1.date1, t2.date2)
from table1 t1 join
table2 t2
using (id);

请注意,如果NULL任何参数,greatest()将返回NULL。 因此,如果您有NULL价值观,则需要特别照顾。

你可以试试

select id, table1.date1, table2.date2, table1.name,
case when table1.date1 > table1.date2 then table1.date1 else table1.date2 end as max_date
from table1
join table2 using (id)

相关内容

  • 没有找到相关文章

最新更新