当前位置:   article > 正文

hivesql实现多行转一行中的collect_list与collect_set的区别_sql collect

sql collect

行转列是sql中常用语法,通常最普遍的做法是使用max,sum再配合case when 来做到,见之前一个blog:是的我又来推销我的blog哈哈哈哈哈嗝儿~

而对于多行转一行的可以使用函数来实现,由于现在hive,spark 使用较为普遍,这里我们拿里面的两个函数collect_list和collect_set来举例说明,MySQL里也有对应的多行转一行——group_concat

collect_list和collect_set都是用来做多行结果转到一行的,他们的区别是前者不去重,后者去重,(不难理解,学过python的都知道set是去重函数),具体使用方法如下:

原数据是这样的

我们的需求是结果做到两列,比如  dog,[water,meat,mantou],实现如下

  1. -- collect_list
  2. select name,collect_list(food) as food from ty_table_liqb_tmp group by name
  3. -- collect_set
  4. select name,collect_set(food) as food from ty_table_liqb_tmp group by name

这里两个函数,我只贴出了一个结果图的原因不是因为我懒,是因为编制测试数据时我忘了写重复数据,所以去不去重都是同一个结果,尴尬,,,至于为什么不重新编一下数据,因为我懒!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/553884
推荐阅读
相关标签
  

闽ICP备14008679号