[MySQL]cliで接続時にSQLだけで簡易的なグラフを書く方法

カテゴリ: MySQL | タグ: ,

MySQLにSSHなどコマンドラインから接続している時に、データの傾向をつかむためにSQLだけで簡単なグラフを書く方法を説明します。

MySQLにはrepeat関数というものがあり、この関数では第二引数で指定した回数分、文字を繰り返し表示させることができます。

> select repeat('l', 2);
+----------------+
| repeat('l', 2) |
+----------------+
| ll             |
+----------------+
1 row in set (0.00 sec)

> select repeat('a', 5);
+----------------+
| repeat('a', 5) |
+----------------+
| aaaaa          |
+----------------+

この機能を利用して、グラフ化したい値を第二引数に指定することで、SQLだけで簡易的な棒グラスをコンソール上に出力することができます。

sqlだけで棒グラフを出力する方法

下記の例は、wp_postsというテーブルから、post_titleの文字数を棒グラフ化しています。
post_title列に格納されている文字列は比較的文字数が多かったため、この例では5文字ごとに1文字出力させています。

> select id,
         length(post_title)                as title_length,
         repeat('x', length(post_title)/5) as graph
  from   wp_posts;

+----+--------------+-------------------------------------------+
| id | title_length | graph                                     |
+----+--------------+-------------------------------------------+
|  1 |           39 | xxxxxxxx                                  |
|  2 |           68 | xxxxxxxxxxxxxx                            |
|  3 |           96 | xxxxxxxxxxxxxxxxxxx                       |
|  4 |           18 | xxxx                                      |
|  5 |           42 | xxxxxxxx                                  |
|  6 |           53 | xxxxxxxxxxx                               |
|  7 |           67 | xxxxxxxxxxxxx                             |
|  8 |           73 | xxxxxxxxxxxxxxx                           |
|  9 |           34 | xxxxxxx                                   |
| 10 |           74 | xxxxxxxxxxxxxxx                           |
| 11 |           89 | xxxxxxxxxxxxxxxxxx                        |
| 12 |           65 | xxxxxxxxxxxxx                             |
| 13 |           73 | xxxxxxxxxxxxxxx                           |
| 14 |           65 | xxxxxxxxxxxxx                             |
| 15 |           70 | xxxxxxxxxxxxxx                            |
| 16 |           62 | xxxxxxxxxxxx                              |
| 17 |           74 | xxxxxxxxxxxxxxx                           |
| 18 |           38 | xxxxxxxx                                  |
| 19 |           46 | xxxxxxxxx                                 |
| 20 |          207 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+----+--------------+-------------------------------------------+
20 rows in set (0.01 sec)

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です