MySQLで列内のすべての値の下3桁の合計を取得する方法
はじめに
MySQLである列に格納されたすべての値について、下3桁(末尾3桁)を抽出し、その合計を求めたい場合があります。このような処理を実現するには、集計関数SUM()と文字列関数RIGHT()を組み合わせて使用します。
RIGHT()関数は文字列の右端から指定した文字数を取り出す関数で、RIGHT(列名, 3)と記述することで各値の末尾3桁を取得できます。さらにSUM()で包むことで、それらを一括して合計できる仕組みです。
本記事では、実際にサンプルテーブルを作成し、データを挿入したうえで、下3桁の合計を取得するクエリの実行方法を順を追って解説します。
サンプルテーブルの作成
まず、CREATE TABLE文を使用してテーブルを作成します。
mysql> create table DemoTable ( Code int ); Query OK, 0 rows affected (0.77 sec)
ここでは「Code」というint型のカラムを持つ「DemoTable」を作成しました。
レコードの挿入
続いて、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values(5464322); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(90884); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(23455644); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(4353633); Query OK, 1 row affected (0.11 sec)
登録データの確認
SELECT文を使って、テーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable;
上記のクエリを実行すると、次のような出力が得られます。
+----------+ | Code | +----------+ | 5464322 | | 90884 | | 23455644 | | 4353633 | +----------+ 4 rows in set (0.00 sec)
4件のレコードが正しく登録されていることが確認できます。
下3桁の合計を取得するクエリ
それでは本題です。列内のすべての値から下3桁を取り出し、その合計を求めるには、以下のようにクエリを記述します。
mysql> select sum(right(Code,3)) AS SumOfLast3Digit from DemoTable;
このクエリのポイントは次のとおりです。
- right(Code,3):各レコードのCode値の右端3文字(下3桁)を取得します。
- sum():取得した下3桁の値をすべて合計します。
- AS SumOfLast3Digit:結果のカラムにわかりやすい別名を付けています。
実行結果
クエリを実行すると、次の出力が得られます。
+-----------------+ | SumOfLast3Digit | +-----------------+ | 2483 | +-----------------+ 1 row in set (0.00 sec)
結果として「2483」が返されました。これは各値の下3桁(322+884+644+633)を足し合わせた数値です。
まとめ
MySQLでは、RIGHT()関数で数値型のカラムからでも末尾の桁を文字列として簡単に取り出せます。さらにSUM()などの集計関数と組み合わせることで、今回のように「下3桁の合計」を1つのクエリで効率的に算出できます。同様のテクニックは、LEFT()を使った先頭桁の抽出や、SUBSTRING()を使った任意位置の切り出しなどにも応用可能ですので、ぜひ覚えておきましょう。
-
MySQLでファイル名が格納された列からファイル拡張子のみを取得する方法
MySQLで「AddTwoNumber.java」や「vector.cpp」のようなファイル名が文字列として保存されている列から、拡張子の部分だけを取り出したいケースはよくあります。このような場合には、substring_index() 関数を使用するのが最も簡単な方法です。substring_index()関数の構文substring_index() 関数は、指定した区切り文字を基準に文字列を分割し、その一部を取得できる関数です。第3引数に -1 を指定すると、区切り文字より後ろ側(右端)の部分文字列を返します。つまり、ドット(.)を区切り文字にすれば、ファイル名の末尾にある拡張子だけを抜き
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI