我有数据,至少 user_id
级别3时间戳(t1、t2、t3)。我想至少得到3个时间戳。我本可以写一个 CASE....WHEN
得到了最小值。
但我面临的问题是,任何列都可以有空值。那么我怎样才能克服 NULL
当得到最小值时
以下是数据
+---------+---------------------+---------------------+---------------------+
| user_id | T1 | T2 | T3 |
+---------+---------------------+---------------------+---------------------+
| 1 | 2020-01-02 01:38:44 | 2020-01-03 12:38:44 | 2020-01-02 02:48:44 |
| 2 | 2020-01-06 01:38:44 | NULL | NULL |
| 3 | NULL | 2020-01-02 14:38:44 | NULL |
| 4 | 2020-02-05 13:38:56 | NULL | 2020-02-02 14:38:56 |
| 5 | 2020-02-04 11:38:56 | 2020-02-05 11:38:56 | NULL |
+---------+---------------------+---------------------+---------------------+
以下是预期结果
+---------+---------------------+
| user_id | min_time |
+---------+---------------------+
| 1 | 2020-01-02 01:38:44 |
| 2 | 2020-01-06 01:38:44 |
| 3 | 2020-01-02 14:38:44 |
| 4 | 2020-02-02 14:38:56 |
| 5 | 2020-02-04 11:38:56 |
+---------+---------------------+
小提琴
2条答案
按热度按时间axzmvihb1#
你可以用
least()
还有其他魔法:一般来说,
least()
退货NULL
如果任何一个论点NULL
. 然而,coalesce()
如果有有效的参数,将选择有效的参数。xtfmy6hx2#
我手头没有一个Hive数据库来尝试这个,但它在postgres中仍然有效,这在语法上非常接近。
结果: