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

MySQLで行(水平方向)の値をカウントする方法をわかりやすく解説

はじめに

MySQLでは、集計関数COUNT()を活用することで、データベース内の水平方向(行内)の値を数えることができます。通常、COUNT()は列ごとの集計に使われますが、工夫次第で1行の中にある条件を満たす値の個数も取得可能です。ここでは、サンプルテーブルを作成し、実際に値をカウントするまでの手順を順番に解説します。

サンプルテーブルの作成

まず、以下のCREATE TABLE文でテーブルを作成します。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstValue int,
    SecondValue int,
    ThirdValue int,
    FourthValue int
);
Query OK, 0 rows affected (0.59 sec)

このテーブルには、4つの整数型カラム(FirstValue〜FourthValue)が用意されています。

レコードの挿入

続いて、INSERTコマンドを使ってテスト用のレコードを追加します。

mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(-18,45,0,155);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(0,235,null,15);
Query OK, 1 row affected (0.20 sec)

2件目のレコードには意図的にNULLを含めています。これにより、NULLの扱い方も確認できます。

登録データの確認

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

mysql> select *from DemoTable;

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

+----+------------+-------------+------------+-------------+
| Id | FirstValue | SecondValue | ThirdValue | FourthValue |
+----+------------+-------------+------------+-------------+
| 1  | -18        | 45          | 0          | 155         |
| 2  | 0          | 235         | NULL       | 15          |
+----+------------+-------------+------------+-------------+
2 rows in set (0.00 sec)

水平方向の値をカウントするクエリ

それが本題です。各行に含まれる0より大きい値の合計個数を求めるには、以下のようなクエリを実行します。

mysql> SELECT
   COUNT(FirstValue > 0 OR NULL) +
   COUNT(SecondValue > 0 OR NULL) +
   COUNT(ThirdValue > 0 OR NULL) +
   COUNT(FourthValue > 0 OR NULL) AS TOTAL_VALUE
FROM DemoTable;

実行結果:

+-------------+
| TOTAL_VALUE |
+-------------+
| 4           |
+-------------+
1 row in set (0.00 sec)

なぜ「OR NULL」が必要なのか

このクエリのポイントは「OR NULL」という記述です。仕組みは以下の通りです。

  • 条件(例:FirstValue > 0)が真の場合 → 1 が返される
  • 条件が偽またはNULLの場合 → NULL が返される
  • COUNT()関数はNULLを無視して数えるため、結果として条件を満たす値だけがカウントされる

今回の例では、-18、0、NULLは条件を満たさないため除外され、45、155、235、15の4つだけがカウントされています。

まとめ

COUNT()関数と条件式(OR NULL)を組み合わせることで、MySQLでも行単位(水平方向)の値を簡単にカウントできます。NULLや0以下の値は自動的に除外されるため、「特定の条件を満たす値が行内にいくつあるか」を知りたい場合に非常に便利なテクニックです。ぜひ実際の開発でも活用してみてください。

  1. MySQLデータベースのバックアップ方法を徹底解説!phpMyAdmin・mysqldump・Cronジョブ・WordPressプラグインの使い方

    MySQLはリレーショナルデータベース管理システム(RDBMS)の一つです。データベースへの命令を処理し、複数のデータベースを同時に管理することができます。 例えば、新しいデータベースを作成したい場合や、既存のデータベースにデータを追加したい場合は、MySQLサーバーに対してメッセージを送り、追加したいデータとその保存先を指定します。 ビジネスの規模が小さくても大きくても、データは欠かせない重要な資産です。貴重な情報を破損・盗難・災害などの被害から守るためには、MySQLデータベースのバックアップが不可欠です。この記事では、その具体的な方法をいくつかご紹介します。 phpMyAdminを使っ

  2. MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方

    MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi