MySQLのCOUNT(*)とGROUP BYを組み合わせて、列の各個別値の出現回数を確認する方法
はい、可能です。集計関数 COUNT(*) を GROUP BY 句と組み合わせて使用することで、MySQLテーブルの列に含まれるそれぞれの個別の値が何回表示されるかを確認できます。まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable1425 -> ( -> JoiningYear int -> ); Query OK, 0 rows affected (0.76 sec)
続いて、INSERT文を使ってテーブルにいくつかレコードを挿入します。
mysql> insert into DemoTable1425 values(2000); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable1425 values(2010); Query OK, 1 row affected (0.24 sec) mysql> insert into DemoTable1425 values(2015); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1425 values(2000); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1425 values(2010); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1425 values(2000); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable1425 values(2010); Query OK, 1 row affected (0.10 sec)
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1425;
上記のクエリを実行すると、以下のような出力が得られます。
+-------------+ | JoiningYear | +-------------+ | 2000 | | 2010 | | 2015 | | 2000 | | 2010 | | 2000 | | 2010 | +-------------+ 7 rows in set (0.00 sec)
それぞれの個別の値が何回出現しているかを確認するには、以下のクエリを実行します。
mysql> select JoiningYear,count(*) from DemoTable1425 group by JoiningYear;
このクエリでは、GROUP BY JoiningYear によって同じ「JoiningYear」の値を持つレコードがグループ化され、count(*) が各グループのレコード件数を返します。実行結果は以下の通りです。
+-------------+----------+ | JoiningYear | count(*) | +-------------+----------+ | 2000 | 3 | | 2010 | 3 | | 2015 | 1 | +-------------+----------+ 3 rows in set (0.00 sec)
このように、DISTINCTを明示的に使わなくても、COUNT(*) と GROUP BY の組み合わせだけで各値の出現回数を簡単に集計できます。さらに結果を見やすくしたい場合は、ORDER BY count(*) DESC を追加して、出現回数の多い順に並べ替えることも可能です。
-
MySQLで特定の3つの値しか格納できないカラムを持つテーブルを作成する方法
MySQLで、あらかじめ決められた3つの値だけを格納できるカラムを持つテーブルを作成したい場合は、ENUMデータ型を使用します。ENUM型を使うと、指定した候補値以外のデータが挿入されるのを防ぐことができます。テーブルの作成まず、ENUM型のカラムを持つテーブルを作成しましょう。ここでは例として、「RED」「GREEN」「BLUE」の3色のみを許可するColorカラムを定義します。mysql> create table DemoTable838(Color ENUM(RED,GREEN,BLUE)); Query OK, 0 rows affected (0.67 sec)これで、Col
-
MySQLでブール(BOOLEAN)列にデフォルト値1を設定・変更する方法
MySQLでは、ALTER TABLE文とDEFAULT句を組み合わせることで、既存のブール(BOOLEAN)型の列にデフォルト値「1」を割り当てることができます。あらかじめ設定しておけば、INSERTコマンド実行時にその列へ値を明示的に指定しなくても、自動的に1が格納されます。 サンプルテーブルを作成する まずはテーブルを作成しましょう。 mysql> create table DemoTable ( isAdult int ); Query OK, 0 rows affected (1.39 sec) 既存の列にデフォルト値1を設定する