首页 > 解决方案 > Presto 中每行的最小值

问题描述

我在 PrestoDB 中有一个包含 4 列类型timestamp tz的表 - 没有 NULL 值 - 并且无法获得每行的最小值。这似乎违反直觉,因为:

SELECT
(SELECT MIN(Col) FROM (VALUES (1), (2), (3), (4)) AS X(Col)) AS TheMin
FROM mytable

^ 使用假整数将为所有行返回 1

然而在我的桌子上:

在此处输入图像描述

SELECT
(SELECT MIN(Col) FROM (VALUES (_col2), (_col3), (_col4), (_col5)) AS X(Col)) AS TheMin
FROM mytable

返回Presto query has failed. type cannot be null

当列中的数据类型全部timestamp tz且 NULL 值为零时,这怎么可能?

使用列作为找到每行的最小时间戳的解决方法是VALUES什么?

标签: sqlpresto

解决方案


只需使用LEAST()

SELECT LEAST(_col2, _col3, _col4), _col5) as TheMin
FROM mytable

推荐阅读