MySQLで特定の項目ごとの件数を取得する方法(COUNTとGROUP BYの使い方)
MySQLでリスト内の特定の項目がそれぞれ何件ずつ存在するかを調べたい場合は、COUNT()関数とGROUP BY句を組み合わせるのが基本です。この記事では、実際にサンプルテーブルを作成し、特定の条件に一致する項目ごとの出現回数を集計する手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まずは、名前を格納するシンプルなテーブルを作成します。
mysql> create table DemoTable1854 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)
2. テーブルにデータを挿入する
次に、INSERT文を使っていくつかのレコードを追加します。ここでは「John-Smith」が2件、「John-Doe」「Chris-Brown」「Adam-Smith」がそれぞれ1件となるように登録しています。
mysql> insert into DemoTable1854 values('John-Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1854 values('Chris-Brown');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1854 values('Adam-Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1854 values('John-Doe');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1854 values('John-Smith');
Query OK, 1 row affected (0.00 sec)
3. 登録したレコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1854;
実行結果は以下のとおりです。
+-------------+ | Name | +-------------+ | John-Smith | | Chris-Brown | | Adam-Smith | | John-Doe | | John-Smith | +-------------+ 5 rows in set (0.00 sec)
4. 特定の項目ごとの件数を集計するクエリ
それでは本題です。「John-」で始まる名前だけを対象に、名前ごとの出現回数を集計してみます。WHERE句でLIKE 'John-%'という条件を指定し、GROUP BY Nameで名前ごとにグループ化することで、各項目の個別カウントを取得できます。
mysql> select Name,count(Name) from DemoTable1854 where Name like 'John-%' group by Name;
実行結果は以下のとおりです。
+------------+-------------+ | Name | count(Name) | +------------+-------------+ | John-Smith | 2 | | John-Doe | 1 | +------------+-------------+ 2 rows in set (0.00 sec)
ポイントまとめ
- COUNT():グループ内のレコード数(出現回数)を数える集計関数です。
- GROUP BY:指定したカラムの値ごとに行をグループ化します。
- WHERE + LIKE:集計対象を「John-%」のようにパターンマッチングで絞り込めます。
この組み合わせを覚えておくと、「同じ値が何回登場するか」という集計処理を簡単に実装できます。ログ分析や重複データの確認など、さまざまな場面で活用できるテクニックなので、ぜひマスターしておきましょう。
-
JavaScriptでリストアイテムを閉じる(非表示にする)方法を解説
Webアプリケーション開発では、ToDoリストや通知一覧など、ユーザーの操作によってリスト項目を削除・非表示にしたいケースが数多くあります。本記事では、JavaScriptを使ってリストアイテムに「×」ボタンを実装し、クリックするとその項目を非表示にする方法を、動作するサンプルコード付きで詳しく解説します。 実装の仕組み この機能は、HTML・CSS・JavaScriptの3つを組み合わせて実現します。大まかな流れは以下のとおりです。 CSSで各リスト項目(<li>)の右端に「×」ボタンを絶対配置する querySelectorAll()でページ内のすべての閉じるボタン(.clo
-
Pythonで要素の合計が大きい行を上位N件抽出する方法(sortedとlambdaの活用)
リストの中に含まれる複数の行(サブリスト)から、要素の合計値が大きいものを指定した件数だけ取り出したい場合があります。このような処理には、Pythonの組み込み関数 sorted と lambda 式を組み合わせると、簡潔に実装できます。 実装例 以下に、具体的なコード例を示します。 my_list = [[2, 4, 6, 7], [2, 4, 8], [45], [1, 3, 5, 6], [8, 2, 1]] print(リストの内容:) print(my_list) my_key = 3 print(抽出する行数(キー):) print(my_key) my_result = s