当前位置:首页 > 程序 > 正文

SQL进阶 面试常见的4种sql算法考试题(三):获取字符串索引列表

2019-09-24 09:22 点击:3次 作者:biucz 我来投稿

SQL进阶 面试常见的4种sql算法考试题(三):获取字符串索引列表

近期在不同群里有小伙伴们提出了一些在面试和笔试中遇到的Hive SQL问题,Hive作为算法工程师的一项必备技能,在面试中也是极有可能被问到的,所以有备无患,本文将对这四道题进行详细的解析,还是有一定难度的,希望你看完本文能够有所收获。

获取字符串索引列表

第三题代码如下:

1011
0101
=> 取到每一行中1所对应的索引列表,索引从1开始
0101    2,4
1011    1,3,4

这一行其实也是对posexplode方法的应用,直接上代码:

select
    id,stri,concat_ws(',',collect_list(index)) as indices
from
(
    select
        id,stri,chr,cast(index + 1 as string) as index
    from
        default.abcg
        lateral view posexplode(split(stri,'')) ids as index,chr
    where
        chr = '1'
) a
group by
    id,stri

推荐阅读:

SQL进阶 面试常见的4种sql算法考试题(一):多列转多行

SQL进阶 面试常见的4种sql算法考试题(二):排序后相邻两行均值

SQL进阶 面试常见的4种sql算法考试题(三):获取字符串索引列表

SQL进阶 面试常见的4种sql算法考试题(四):分块排序