SQLの自己結合を用いて数学の重複組み合わせを表現する
はじめに
SQLにおいて、自分はあまり聞き慣れなかった自己結合の今後役立つかもしれないテクニックを紹介していきます。
実行結果はこちらで確認できます。
自己結合を用いて重複組み合わせを作る
重複組み合わせの概念は以下を参照してください。
Schema (MySQL v5.7)
何かのメンバー一覧だと思ってください。
CREATE TABLE members (
id INT NOT NULL PRIMARY KEY auto_increment,
name TEXT
);
INSERT INTO members VALUES
(1, 'tanaka'),
(2, 'okada'),
(3, 'hiranuma');
このメンバーの重複組み合わせを考えます。
今回のケースを計算すると
_{3}H_{2} = _{4}C_{2} \\
= \frac{4\times3}{2\times1} \\
= 6 \\
6通りの組み合わせが考えられます。
Query
SELECT
M1.name AS name_1,
M2.name AS name_2
FROM members M1
INNER JOIN members M2 ON M2.name <= M1.name
文字コードの順にソートして、 自分(M1)と同等か、それよりも前に来るメンバーがペアになります。
Results
name_1 | name_2 |
---|---|
tanaka | tanaka |
tanaka | okada |
okada | okada |
tanaka | hiranuma |
okada | hiranuma |
hiranuma | hiranuma |
重複があることがわかります。
組み合わせなので、順序を入れ替えただけのペアは同じとみなしています。
参照
59p
アウトプット100本ノック実施中
Author And Source
この問題について(SQLの自己結合を用いて数学の重複組み合わせを表現する), 我々は、より多くの情報をここで見つけました https://qiita.com/ryosuketter/items/7ca38ed8e6834c2e3b8f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .