SQL排列组合
1、排列组合概述
排列组合是针对离散数据常用的数据组织方法,本节将分别介绍排列、组合的SQL实现方法,并结合实例着重介绍通过组合对数据的处理
如何使用SQL实现排列与组合?本节将通过介绍分组对比统计场景,抽象出通用的解决方案
本文尝试独辟蹊径,强调通过灵活的、发散性的数据处理思维,就可以用最基础的语法,解决复杂的数据场景。文章涉及的SQL语句使用了Hive SQL的基础语法和部分高级语法特性
相关函数参考MaxCompute:https://help.aliyun.com/zh/maxcompute/user-guide/overview/?spm=a2c4g.11186623.0.0.738048b99fbTqb
2、SQL排列组合
2.1、排列
排列的定义:从n个不同元素中,任取m(m<=n,m与n均为自然数)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m个元素的所有排列的个数叫做从n个不同元素中取 m个元素的排列数,用符号 A n m A_n^m Anm表示
例如,对于字符序列['A', 'B', 'C']
,每次从该序列中可重复地选取出2个字符,如何获取到所有的排列?
排列的SQL实现如下:
select
val1, val2, concat(val1, val2) as perm
from (select array('A', 'B', 'C') as chars) dummy
lateral view explode(chars) t1 as val1
lateral view explode(chars) t2 as val2
'''
val1 val2 perm
A A AA