SELECT t1.custom1
, t2.custom2
, t3.custom3
, t4.custom4
, t5.custom5
FROM ( SELECT 'Y' AS custom1 UNION ALL SELECT 'N' ) t1
CROSS
JOIN ( SELECT 'Y' AS custom2 UNION ALL SELECT 'N' ) t2
CROSS
JOIN ( SELECT 'Y' AS custom3 UNION ALL SELECT 'N' ) t3
CROSS
JOIN ( SELECT 'Y' AS custom4 UNION ALL SELECT 'N' ) t4
CROSS
JOIN ( SELECT 'Y' AS custom5 UNION ALL SELECT 'N' ) t5
ORDER
BY t1.custom1 DESC
, t2.custom2 DESC
, t3.custom3 DESC
, t4.custom4 DESC
, t5.custom5 DESC
在数据语言中,这个操作是序列本身的笛卡尔积。它也被称为“交叉连接”,因为它在代数中用x交叉表示。这是 {N,Y} x {N,Y} x {N,Y} x {N,Y} x {N,Y} . 练习:对于一个包含三个元素的序列,{a,b,c},你会怎么做呢?有多少k元素的组合? 练习:有多少种方法可以订购10个y或N,每个y或N正好有5个?你将如何产生这些组合?再一次,从一个简单的问题开始,用理性的方法解决更难的问题。 进一步阅读:如果您对如何在c中进行这些操作感兴趣,那么多年来我已经写了很多关于它们的文章: https://ericlippert.com/2010/06/28/computing-a-cartesian-product-with-linq/ https://ericlippert.com/2013/04/15/producing-permutations-part-one/ https://ericlippert.com/2014/10/13/producing-combinations-part-one/
2条答案
按热度按时间iklwldmw1#
我会使用五行源的交叉连接。
o4tp2gmn2#
从一个简单的问题开始。零y或n有多少个独特的组合?只有一个:不包含元素的组合。
一个y或n有多少个独特的组合?有两种:
两个y或n有多少独特的组合?有四种:
三个?共有八种:
0有1,1有2,2有4,3有8。。。你现在应该已经猜到了有两对k的组合。
我们通过以下算法从旧组合中形成新组合:
如果元素为零,则结果为空列表。
如果k>0个元素,请列出k-1个元素。”将列表加倍,并用n或y扩展每一对。
如果最后一个例子不清楚,我们再来看3。我们从解决2的问题开始:
然后我们加倍
然后我们加上n,y,n,y,n,y,n,y得到
在数据语言中,这个操作是序列本身的笛卡尔积。它也被称为“交叉连接”,因为它在代数中用x交叉表示。这是
{N,Y} x {N,Y} x {N,Y} x {N,Y} x {N,Y}
.练习:对于一个包含三个元素的序列,{a,b,c},你会怎么做呢?有多少k元素的组合?
练习:有多少种方法可以订购10个y或N,每个y或N正好有5个?你将如何产生这些组合?再一次,从一个简单的问题开始,用理性的方法解决更难的问题。
进一步阅读:如果您对如何在c中进行这些操作感兴趣,那么多年来我已经写了很多关于它们的文章:
https://ericlippert.com/2010/06/28/computing-a-cartesian-product-with-linq/
https://ericlippert.com/2013/04/15/producing-permutations-part-one/
https://ericlippert.com/2014/10/13/producing-combinations-part-one/