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

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 という結果が得られます。同じ考え方を応用すれば、任意の桁数の数値に対しても桁ごとの合計を計算できます。

  1. 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)ここでは、学生名を

  2. MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】

    MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889    (    DueDate date,    Amount int