MySQLで年(西暦)の各桁の合計を計算する方法
MySQLでは、剰余演算子(%)とFLOOR関数を組み合わせることで、年(西暦)の各桁の合計を簡単に求めることができます。
桁の合計とは?
まず、年の末尾の桁(1の位)を取り出して加算し、これをすべての桁に対して繰り返します。例えば「2020年」の場合は次のようになります。
2 + 0 + 2 + 0 = 4
末尾の桁を取り出す基本クエリ
数値から末尾の桁を取り出すには、10で割った余りを求めます。基本となるクエリは以下の通りです。
SELECT FLOOR(@yourVariableName % 10);
年の各桁の合計を求めるクエリ
千の位・百の位・十の位・一の位それぞれを取り出して合計することで、年の桁の合計が求められます。実際に変数に「2020」を設定して実行してみましょう。
mysql> SET @year_column_value = 2020;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT
-> FLOOR(@year_column_value / 1000)
-> + FLOOR(@year_column_value % 1000 / 100)
-> + FLOOR(@year_column_value % 100 / 10)
-> + FLOOR(@year_column_value % 10) AS SUM_OF_DIGITS_OF_YEAR;実行結果
上記のクエリを実行すると、次のような結果が出力されます。
+-----------------------+ | SUM_OF_DIGITS_OF_YEAR | +-----------------------+ | 4 | +-----------------------+ 1 row in set (0.00 sec)
仕組みの解説
- FLOOR(@year_column_value / 1000):千の位(2)を取り出します。
- FLOOR(@year_column_value % 1000 / 100):1000で割った余りをさらに100で割り、百の位(0)を取り出します。
- FLOOR(@year_column_value % 100 / 10):100で割った余りから十の位(2)を取り出します。
- FLOOR(@year_column_value % 10):10で割った余り、つまり一の位(0)を取り出します。
このように各桁を順番に取り出して足し合わせることで、「2020」の場合は 2 + 0 + 2 + 0 = 4 という結果が得られます。同じ考え方を応用すれば、任意の桁数の数値に対しても桁ごとの合計を計算できます。
-
MySQLで重複レコードの値をSUM関数とGROUP BYで合計する方法
MySQLでは、GROUP BY句とSUM関数を組み合わせることで、重複しているレコードの値をグループごとにまとめて合計できます。この記事では、学生名ごとに点数を集計する具体例を通して、その手順をわかりやすく解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> );Query OK, 0 rows affected (0.68 sec)ここでは、学生名を
-
MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】
MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889 ( DueDate date, Amount int