MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLクエリでレコードの小数点を削除して合計を求める方法

文字列型(varchar)のカラムに保存された数値データから小数点を取り除き、その合計を求めたい場合があります。そんなときは、集計関数SUM()と文字列操作関数REPLACE()を組み合わせることで実現できます。この記事では、テーブル作成から合計の算出まで、具体的な手順をサンプルコード付きで解説します。

サンプルテーブルを作成する

まず、価格データを保存するためのテーブルを作成します。ここではPriceカラムをvarchar型として定義します。

mysql> create table DemoTable857(Price varchar(100));
Query OK, 0 rows affected (1.40 sec)

レコードを挿入する

次に、INSERTコマンドを使ってテーブルにレコードを追加します。あえて「40.30.20」のように小数点が複数含まれる不正な形式のデータも挿入しています。

mysql> insert into DemoTable857 values('50.60');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable857 values('40.30.20');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable857 values('10.20');
Query OK, 1 row affected (0.69 sec)

テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable857;

実行結果は以下の通りです。

+----------+
| Price |
+----------+
| 50.60 |
| 40.30.20 |
| 10.20 |
+----------+
3 rows in set (0.00 sec)

小数点を削除して合計を求めるクエリ

以下のクエリを実行すると、各レコードから小数点を削除した上で合計値を算出できます。

mysql> select sum(replace(Price,'.','')) AS SumOfAll from DemoTable857;

実行結果:

+----------+
| SumOfAll |
+----------+
| 409100 |
+----------+
1 row in set (0.03 sec)

仕組みの解説

REPLACE(Price, '.', '')は、Priceカラムの値に含まれるすべてのピリオド(.)を空文字に置換します。例えば「50.60」は「5060」、「40.30.20」は「403020」に変換されます。

その後、SUM()関数によってこれらの文字列は暗黙的に数値へ変換され、合計が計算されます。今回の例では「5060 + 403020 + 1020 = 409100」という結果になります。

このように、REPLACE()とSUM()を組み合わせれば、小数点を含む文字列データでも簡単に数値として合計を求めることが可能です。入力ミスなどで形式が不揃いなデータを一括集計したい場合にぜひ活用してください。

  1. MySQLで月の範囲を指定してレコードを取得する方法

    MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795      (      Name varchar(20),      DueDate date  

  2. MySQLで複数のキーワードに一致するレコードを抽出する方法|RLIKE演算子の使い方を解説

    RLIKE演算子を使った複数条件でのレコード絞り込み MySQLで複数の単語(キーワード)のいずれかに一致するレコードを抽出したい場合は、RLIKE演算子を使用します。RLIKEは正規表現によるパターンマッチングを行う演算子で、|(パイプ)で区切ることで、OR条件のように複数の値を指定できます。 基本的な構文は以下のとおりです。 SELECT * FROM yourTableName WHERE yourColumnName RLIKE yourValue1|yourValue2; サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> CREATE