Navicatブログ

いくつかの便利なMySQL数値関数 2022年2月18日 Robert Gravelle

2021年5月に、SQL ServerのImportant SQL Server Functions(重要なSQL Serverの機能)のいくつかを調べました。今回は、MySQLに注目して、数学関数と数値関数の観点からMySQLが何を提供するかを確認します。それらが実際にどのように機能するかを確認するために、 Navicat 16 for MySQLで実行するクエリでそれらを使用します。

SQL Server関数とMySQL関数の比較

Important SQL Server Functions(重要なSQL Serverの機能)の記事では、Abs、Round、Ceiling、およびFloor関数を確認しました。実は、MySQLはこれらの関数を実装しているだけでなく、全く同じ名前で実装しています。これらはデータベース製品やプログラミング言語全体の基本的な数値関数であるため、おそらくこれは驚くべきことではありません。

それらの関数は両方のDBMSで同じであるため、それらの使用を再ハッシュしても意味がありません。代わりに、先に進み、MySQLの他の便利な数値関数を調べましょう。

AVG

あなたはおそらく、平均、または算術平均が何であるかを既にご存じでしょう。データセット内の全ての値を加算し、その結果をセット内のデータポイントの数で割ることによって計算されることさえもご存じかもしれません。したがって、4、5、6、5、3などの5つの数値がある場合、それらの平均は次のように計算されます。

(4 + 5 + 6 + 5 + 3) / 5 = 4.6

小さなサンプルで十分ですが、10,000行あるとどうなるでしょうか?答えは、もちろん、MySQLの組み込みAVG関数(ちなみに、SQL Serverで同じ名前が付けられています)を使用することです。必要なことは数式を提供することだけで、数式は平均値を返します。シンプルな構文は次のとおりです。

AVG(expression)

ほとんどの場合、平均を計算したい列名を渡しているでしょう。例えば、Sakilaサンプルデータベース内の全ての映画の平均上映時間を与えるクエリは次のとおりです。

avg (84K)

GROUP BYは、値をcategory_idで分割し、平均が各映画タイプ(「Action」、「Drama」など)に基づくようにします。

AVG関数の結果をROUNDに渡すことにより、余分な小数点以下の桁の一部を省略できます。

より複雑な例

数値関数の興味深い点は、より大きな計算の一部として使用できることです。その好例として、映画の交換費用とレンタル料金の平均差が17ドルを超える映画カテゴリがいくつあるかを示すクエリを次に示します。

avg_replacement_cost (104K)

交換費用を計算するために、平均レンタル料金が平均交換費用から差し引かれます。一時変数は必要ありません。1つの関数の結果を他の関数から引くだけです。

( AVG( replacement_cost ) - AVG( rental_rate ) ) AS replace_sub_rental

MIN/MAX

多くの数値関数が3文字の名前であることに気づきましたか?その理由はわかりませんが、セットの最小値と最大値を計算するための2つの関連関数があります。繰り返しますが、最も一般的な使用法は、列名を関数に渡すことです。次のクエリは、rental_date列に従って、最初と最後のレンタルの映画の詳細を選択します。そのため、MIN関数とMAX関数の両方に渡されます。

min_max (73K)

集計関数とスカラーデータの混合は問題になる可能性があるため、MINおよびMAXのrental_datesは、各Filmテーブル行の日付と比較するためにサブクエリ内でフェッチされます。

結論

このブログでは、データベースクライアントとしてNavicat 16 for MySQLを使用して、AVG、MIN、MAXを含む、MySQLで役立ついくつかの数値関数を紹介しました。Navicat 16 for MySQLを試してみたい場合は、こちらから14日間の試用版をダウンロードできます。

ブログのアーカイブ
シェア