当前位置: 首页 > 面试题库 >

如何根据 1-69 之间的数字列表创建 5 个数字排列的列表?

颜博达
2023-03-14
问题内容

我有一个 SQL Server DB,其中包含列 NM1-NM69 及其字段值中的相应数字:

NM1 | NM2 | NM3 | NM4 | NM5 |...... | NM69
------------------------------------------
1   | 2   | 3   | 4   | 5   |...... | 69

我试图找出这个列表的所有 5 个数字排列。我如何以简单易行(好..更容易)的方式做到这一点?

示例输出:

PM NM1 | PM NM2 | PM NM3 | PM NM4 | PM NM5 |
--------------------------------------------
68     | 2      | 55     | 43     | 52     |

编辑:我正在使用 SQL


问题答案:

您将数据 UNPIVOT 放入一列,然后 CROSS JOIN 五次。这是一个 SQL Fiddle 排列 5 列选择 3. SQL Fiddle

DECLARE @t TABLE (Field1 INT, Field2 INT, Field3 INT, Field4 INT, Field5 INT)

INSERT INTO @t VALUES (1,2,3,4,5)

; WITH cte AS (
    SELECT u.FieldValue
    FROM @t
    UNPIVOT (
        [FieldValue] FOR [FieldName] IN (
            Field1, Field2, Field3, Field4, Field5
        )
    ) u
)

SELECT
    t1.FieldValue AS PermuteField1,
    t2.FieldValue AS PermuteField2,
    t3.FieldValue AS PermuteField3
FROM
    cte AS t1 CROSS JOIN
    cte AS t2 CROSS JOIN
    cte AS t3
WHERE
    t1.FieldValue <> t2.FieldValue AND
    t1.FieldValue <> t3.FieldValue AND
    t2.FieldValue <> t3.FieldValue


 类似资料:
  • 如何在两个值之间创建升序列表?例如,11到16之间的列表:

  • 如何创建一个列表,其中的值介于我输入的两个值之间?例如,为11到16之间的值生成以下列表:

  • 问题内容: 如何创建一个包含两个输入值之间的值的列表?例如,将为11到16的值生成以下列表。 问题答案: 使用。在Python 2.x中,它返回一个列表,因此您需要做的是: 在Python 3.x中是迭代器。因此,您需要将其转换为列表: 注意 :第二个数字是唯一的。因此,这里需要为= 编辑: 要回答有关增加by的问题,最简单的选择可能是使用numpy 和:

  • 问题内容: 我在尝试实现的算法周围束手无策。我有两个列表,希望从两个列表中进行特定组合。 这是一个例子。 在这种情况下,输出为: 我的名字可能比数字多,即。这是一个具有3个名称和2个数字的示例: 输出: 问题答案: 注意 :此答案是针对上面提出的特定问题的。如果您来自Google,只是想寻找一种使用Python获得笛卡尔积的方法,或者您可能正在寻找简单的列表理解方法- 请参见其他答案。 假设。然后

  • 我有一个,它以字符、整数的形式存储密文块中每个字母的频率。然后按最频繁的降序将地图排序为。 然后,我将这些频率与已知的字母频率列表进行比较,以尝试猜测密码字母是什么。我遇到的问题是,如果两个或多个字母出现的次数相同。 例如,如果我们采取以下措施: 密码文本中最常见的5个字母是desc,然后是字母频率: 然后可以公平地假设映射到,因为它是最常见的,其次是映射到等等。 如果字母频率为: 还不清楚、还是

  • 问题内容: 我正在寻找一种最有效的方法,根据序列中缺少的数字将数字列表分成较小的列表。例如,如果初始列表为: 该函数将产生: 要么 会导致: 问题答案: 旧Python文档中的Python 3版本代码: 每当关键函数更改其返回值时,itertools模块中的函数都会生成中断。诀窍在于,返回值是列表中的数字减去列表中元素的位置。当数字中有空格时,此差异会更改。 该功能来自operator模块,您必须