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

MySQLで負の値を含むヒストグラムを表示する方法

MySQLで負の値を含むヒストグラムを表示する方法

MySQLでヒストグラム(簡易棒グラフ)を表示する際、負の値も含めて視覚化したい場合は、REVERSE()関数とCONCAT()関数を組み合わせるのがポイントです。負の値に対してREVERSE()を使うことで、アスタリスク(*)によるバーを左向きに表示できます。ここでは、実際にサンプルテーブルを作成しながら手順を解説します。

1. サンプルテーブルの作成

まず、ヒストグラム用のテーブルを作成しましょう。

mysql> create table DemoTable632 (
histogramId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
histogramValue int,
histogramImage text
);
Query OK, 0 rows affected (0.78 sec)

2. レコードの挿入

次に、INSERT文で正の値と負の値のレコードを挿入します。

mysql> insert into DemoTable632(histogramValue) values(2);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable632(histogramValue) values(3);
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable632(histogramValue) values(-6);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable632(histogramValue) values(-5);
Query OK, 1 row affected (0.13 sec)

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

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

mysql> select *from DemoTable632;

実行結果は次の通りです。現時点ではhistogramImage列はまだNULLになっています。

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
|           1 |              2 | NULL           |
|           2 |              3 | NULL           |
|           3 |             -6 | NULL           |
|           4 |             -5 | NULL           |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

4. 負の値に対応したヒストグラムを生成するクエリ

ここからが本題です。以下のクエリでは、IF()で値が負かどうかを判定し、負の値の場合はREVERSE()RPAD()を組み合わせてバーを左側に、正の値の場合はREPEAT()でそのまま右側にアスタリスクを並べています。

mysql> SELECT histogramId, histogramValue, CONCAT(
    REVERSE(RPAD(REPEAT('*', IF(histogramValue<0,-histogramValue,0)), 100, ' ')),
    REPEAT('*',IF(histogramValue<0,0,histogramValue))
  )
AS histogramImage FROM DemoTable632 ORDER BY histogramId;

クエリの仕組み

  • 負の値の場合: -histogramValueで絶対値を求め、その回数だけ「*」を繰り返します。RPAD(..., 100, ' ')で文字列全体を100文字幅に空白埋めし、REVERSE()で反転することで、バーが左向きに配置されます。
  • 正の値の場合: REPEAT()によって値の数だけ「*」を右方向へそのまま並べて表示します。

実行結果は次の通りです。

+-------------+----------------+----------------+
| histogramId | histogramValue | histogramImage |
+-------------+----------------+----------------+
|           1 | 2              | **             |
|           2 | 3              | ***            |
|           3 | -6             | ******         |
|           4 | -5             | *****          |
+-------------+----------------+----------------+
4 rows in set (0.00 sec)

このように、値の大きさに応じたアスタリスクのバーが自動的に生成され、正と負のデータをひと目で比較できるヒストグラムを作成できます。数値データの分布をSQLだけで手軽に視覚化したい場合に、ぜひ活用してみてください。

  1. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用

  2. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )