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

hc2pp10m  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(561)

我有以下疑问:

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 给出一个值的函数列表并从中选择最大值

uyhoqukh

uyhoqukh1#

使用 greatest() :

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

请注意 greatest() 退货 NULL 如果有任何论据 NULL . 所以,如果你有 NULL 价值观,你需要特别照顾。

hmtdttj4

hmtdttj42#

你可以试试

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)

相关问题