神戸のホームページ制作会社ユニファース 代表ブログ

【MySQL】sumのようにカラム同士を掛け算する方法

【MySQL】sumのようにカラム同士を掛け算する方法

カラム同士を足し算する関数のSUMはあるんですが、掛け算する関数はMySQLには無いんですよね。Excelならば、PRODUCT関数に相当するものです。

それでも使う必要が生じまして、ネットで色々調べたのの、中々ビンゴの情報が出て来なかったのでメモしておきます。

 

テーブルの作成

まずは、このSQLを実行して、テーブルを作成して下さい。

こんなテーブルが作成されると思います。日付の順番を替えているのはわざとです。

累計の計算

まずはこのテーブルについて、1月から順に累計を求めてみます。累計を求めるSQLは以下の通りです。

キチンと日付順に累積が求められました。この累計については、まだよく見るアルゴリズムです。

累積(カラム同士の掛け算)の計算

カラム同士の足し算は、累計で良いんですが、掛け算は、何て言うのでしょう?累積では無いような?分かる方は教えて下さい。

さて、SQLは以下の通りです。小数点第2位以下切り捨てにしています。

参考:TRUNCATE

無事にカラム同士の掛け算が出来ました。

の部分については、私も分かっていません。掛け算を、SUMを使って可能にするおまじない、位に考えて下さい。笑

この記事をシェアする

記事一覧へ戻る

コメント Comments

コメント一覧

  • ab がコメント

    2019年3月2日 2:05 PM

    EXP(SUM(log(b.num)))
    は、対数関数を使ってかけ算を足し算にする、程度に捉えるとよいと思います。
    たとえば、「1×2×3×4」は、対数関数を使うとにすると「e^{ log(1)+log(2)+log(3)+log(4) }」となります。
    かけ算を足し算の形にすると扱い安い場合などによく行われます。

    ちなみに、 TRUNCATE(EXP(SUM(log(b.num)))+0.005,2)
    と、0.005を足し、小数点以下2桁で切捨て(TRUNCATE)しているのは、四捨五入するためです。

コメントする

関連記事 Relation Entry