MySQLのGROUP BY句を使って結果セットをグループに分割する方法
MySQLのSELECT文でGROUP BY句を使用すると、結果セットをグループに分割することができます。GROUP BY句では、グループ化の基準となる列を指定します。指定した列で同じ値を持つ行は、1つのグループとしてまとめられます。これにより、SELECT文が返す結果セットが複数のグループに整理されます。
具体例
以下の例で、GROUP BY句の動作を確認してみましょう。
まず、「employees(従業員)」というテーブルがあるとします。
mysql> Select * from employees; +------+-------------+--------+------------+ | id | designation | Salary | DoJ | +------+-------------+--------+------------+ | 100 | Asst.Prof | 50000 | 2016-06-15 | | 300 | Prof | 85000 | 2010-05-18 | | 250 | Asso.Prof | 74000 | 2013-02-12 | | 400 | Prof | 90000 | 2009-05-19 | | 200 | Asst.Prof | 60000 | 2015-05-11 | +------+-------------+--------+------------+ 5 rows in set (0.00 sec)
次に、以下のクエリを実行すると、出力結果を職位ごとのグループに分割できます。
mysql> select designation, count(*), AVG(salary) from employees group by designation; +-------------+----------+-------------+ | designation | count(*) | AVG(salary) | +-------------+----------+-------------+ | Asso.Prof | 1 | 74000.0000 | | Asst.Prof | 2 | 55000.0000 | | Prof | 2 | 87500.0000 | +-------------+----------+-------------+ 3 rows in set (0.00 sec)
このクエリの結果から、結果セットが次のようにグループ化されていることが分かります。
- Asso.Prof(准教授):1名、平均給与74,000
- Asst.Prof(助教授):2名、平均給与55,000
- Prof(教授):2名、平均給与87,500
ポイント
GROUP BY句は、COUNT()やAVG()などの集計関数と組み合わせて使うのが一般的です。上記の例では、COUNT(*)で各グループの行数を、AVG(salary)で各グループの平均給与をそれぞれ算出しています。このようにGROUP BY句を活用することで、データをカテゴリ別に集約し、集計結果を効率的に取得できます。
-
MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説
MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var
-
MySQLでSELECTクエリの結果を並べ替える方法|ORDER BY句の基本と実践例
データベース操作では、テーブルから特定のデータや行を抽出することが日常的によくあります。通常、SELECT文で取得した行はテーブル内に格納されている順序で返されますが、場合によっては、特定の列を基準にして昇順または降順で並べ替えた結果を取得したいこともあるでしょう。そんなときに活躍するのが「ORDER BY」句です。以下で具体的な使い方を見ていきましょう。例えば、「name」フィールドを含む複数のカラムを持つテーブルがあるとします。テーブルからすべての行を取得したいけれど、名前のアルファベット順に並べ替えた状態で結果を受け取りたい——こうしたケースでは、ORDER BY句を使って「name」フ