SQL_差集合_MySQLの場合

差集合とは


差集合(さしゅうごう、英: set difference)とは、ある集合の中から別の集合に属する要素を取り去って得られる集合。(WIKI)

ja.wikipedia.org

・・この説明ではよくわからん・・ですね・・

実際にSQLを書いてみる方がわかりやすいです。

SELECT
  *
FROM
  A
LEFT JOIN
  B
  ON A.id = B.id
WHERE
  B.id IS NULL

集合AにBを外部結合し、BのidがNULLのデータをWHEREで除外しています。

式はA - Bです。

SQLで書くと簡単です。ただ、MySQL以外はEXCEPTでもっと簡単に書けるようですね。

実際の活用例


例えば、契約者別の月額推移をSQLで出したい時、金額データ全体を集合A、契約初月の金額データを集合Bとします。

A - Bをして月別に集計すれば、契約翌月以降の月額推移を出せます。

*詳細のSQLは割愛します。

蛇足


SQLは集合の知識をよく使いますが、これは高校で習った数学の知識が役に立ちますね。

応用情報技術者の勉強をしていてド・モルガンの法則が出てきたのですが、高校数学の教科書に載っていました。

忘れていたので見返してみました。

開発部のエンジニアで高学歴の方をよく見かけますが、確かにIT知識は学校で習った基礎知識が前提となっていると感じます。

基礎知識が身に付いているとIT業界では有利だと思います。

*もちろん高卒で活躍されている方もいますし、あくまで基礎学力があるかが重要だと思います。

以上です。