我timestamp tz在 PrestoDB 中有一个包含 4 列类型的表 - 没有 NULL 值 - 并且无法获得每行的最小值。这似乎违反直觉,因为:
SELECT
(SELECT MIN(Col) FROM (VALUES (1), (2), (3), (4)) AS X(Col)) AS TheMin
FROM mytable
Run Code Online (Sandbox Code Playgroud)
^ 使用假整数将为所有行返回 1
然而在我的桌子上:
SELECT
(SELECT MIN(Col) FROM (VALUES (_col2), (_col3), (_col4), (_col5)) AS X(Col)) AS TheMin
FROM mytable
Run Code Online (Sandbox Code Playgroud)
返回 Presto query has failed. type cannot be null
当列中的数据类型全部timestamp tz并且有零个 NULL 值时,这怎么可能?
这里使用列作为查找每行的最小时间戳的解决方法是VALUES什么?
只需使用LEAST():
SELECT LEAST(_col2, _col3, _col4), _col5) as TheMin
FROM mytable
Run Code Online (Sandbox Code Playgroud)