使用Hive,我有重复的行,并且当特定列为空时,我想删除重复的行(选择具有非空列的不同行)。但是我想在列为空但不重复的时候保留行。
例如输入为
id | name | fathername | address
1 | bob | john | street1
1 | bob | john |
2 | amir | khan |
3 | roby | johanson | street3
输出
id | name | fathername | address
1 | bob | john | street1
2 | amir | khan |
3 | roby | johanson | street3
当地址为空时,我们删除了ID为1的行,因为它是重复的行。尽管缺少ID 2的地址,但我们仍要保留该行,因为它不是重复的行。我需要蜂巢。实际问题中有很多列,而解决方案则需要选择*而不是特定的列。
答案 0 :(得分:0)
您可以将// Change Default Image Editor Library Used by WordPress
function xyz_image_editor_default_to_gd( $editors ) {
$gd_editor = 'WP_Image_Editor_GD';
$editors = array_diff( $editors, array( $gd_editor ) );
array_unshift( $editors, $gd_editor );
return $editors;
}
add_filter( 'wp_image_editors', 'xyz_image_editor_default_to_gd' );
与GROUP BY
一起使用:
MAX
或者如果您想使用select id, name, fathername, max(address)
from data
group by id, name, fathername
:
select *
答案 1 :(得分:0)
您可以使用order by
对row_number
中的非空地址行进行优先级排序。
select *
from (select t.*
,row_number() over(partition by id order by case when address is not null then 1 else 2 end) as rnum
from tbl t
) t
where rnum = 1
注意:如果存在多于一个非空行,则可能必须指定一列或多列来打破关系。