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

MySQLで値の出現回数をカウントし、降順に並べた新しい列として表示するクエリの書き方

MySQLで列内の各値が出現する回数を集計し、その結果を降順に並べ替えて表示したい場合があります。降順に並べ替えるには ORDER BY 句に DESC キーワードを組み合わせます。また、値の個数を数えるには COUNT() 関数を使用します。

例えば、「John」という名前が列に3回出現している場合、別の列にはカウント値「3」が表示されます。このようにして求めたすべてのカウント値を、ORDER BY DESC を使って降順に並べ替えることができます。

それでは、実際にテーブルを作成してみましょう。

mysql> create table DemoTable
-> (
-> EmployeeName varchar(100)
-> );
Query OK, 0 rows affected (0.85 sec)

レコードの挿入

次に、insertコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.31 sec)

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.14 sec)

テーブルの内容を確認

select文を使って、テーブル内のすべてのレコードを表示してみます。

mysql> select *from DemoTable;

出力結果

+--------------+
| EmployeeName |
+--------------+
| Sam |
| David |
| David |
| Chris |
| Robert |
| Chris |
| Sam |
| Sam |
| David |
| Robert |
| David |
| Chris |
+--------------+
12 rows in set (0.00 sec)

カウントを取得して降順に表示するクエリ

以下が、各値の出現回数をカウントし、そのカウントを新しい列(エイリアス「Total」)として表示しながら、降順に並べ替えるクエリです。

mysql> select EmployeeName,count(EmployeeName) as Total from DemoTable
-> group by EmployeeName
-> order by Total DESC;

出力結果

+--------------+-------+
| EmployeeName | Total |
+--------------+-------+
| David | 4 |
| Chris | 3 |
| Sam | 3 |
| Robert | 2 |
+--------------+-------+
4 rows in set (0.00 sec)

このように、GROUP BY句で名前ごとにグループ化し、COUNT()関数で出現回数を集計することで、Davidが4回、ChrisとSamがそれぞれ3回、Robertが2回出現していることが一目でわかります。ORDER BY Total DESC の指定により、出現回数の多い順に結果が並べ替えられて表示されます。

  1. MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方

    MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (

  2. MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法

    MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable