我有一个包含两列的表,其中一列的值可能会丢失。第一列是id,第二列是value。我想为唯一id选择行,这样如果有多个行具有相同的id,但其中一些缺少值,则返回其中一个具有现有值。如果id为的所有行都有空值,则返回其中任何一行。
换句话说,只要两行具有相同的id,它们就应该属于同一组。但在每个组中,如果有值,则返回具有值的值。
例如,输入表。
+--------+---------+
| ID | VALUE |
+------------------+
| x | 1 |
| x | 1 |
| y | 2 |
| y | |
| z | |
| z | |
+------------------+
应返回:
+------------+---------+
| ID | VALUE |
+------------+---------+
| x | 1 |
| y | 2 |
| z | |
+------------+---------+
3条答案
按热度按时间a11xaf1n1#
根据你的描述,你可以用
max()
:如果需要其他列,请使用
row_number()
:p5cysglq2#
您可以轻松地将查询分为两个查询:
a u(b-a)
gopyfrb33#
您可以在hive/sql中使用distinct函数
上面的查询将在id、value列中返回不同的值
上面的语句用于基于所有列仅返回不同(不同)的值。