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
  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值