MySQLで列の要約出力を取得する方法|WITH ROLLUP修飾子の使い方
MySQLでは、GROUP BY句と組み合わせて「WITH ROLLUP」修飾子を使用することで、結果セットに列の要約(集計)出力を追加できます。この修飾子を使うと、各グループの集計結果に加えて、より上位レベルの集計操作を表す追加行が自動的に生成されます。
WITH ROLLUPの基本
通常、GROUP BY句は各グループごとの集計結果のみを返しますが、WITH ROLLUPを付け加えると、全グループをまとめた総計行が結果の末尾に追加されます。この要約行では、グループ化に使用した列の値がNULLとして表示されるのが特徴です。
使用例
次の例では、「Item_list」テーブルから品目(Item_name)ごとの合計コストを算出し、WITH ROLLUP修飾子によって全品目の総コストを含む要約行が追加されています。
mysql> Select Item_name, SUM(Cost) AS Total_cost from Item_list GROUP BY Item_name WITH ROLLUP; +-----------+------------+ | Item_name | Total_cost | +-----------+------------+ | Notebook | 45.00 | | Pen | 31.70 | | Pencilbox | 125.20 | | NULL | 201.90 | +-----------+------------+ 4 rows in set (0.00 sec)
実行結果を見ると、Item_nameが「NULL」となっている最終行が要約行であり、Total_cost列には全品目の合計値である201.90が表示されていることがわかります。
ポイント
WITH ROLLUPはGROUP BY句の直後に指定します。- 要約行のグループ化列はNULLで表示されるため、必要に応じて
COALESCE(Item_name, '合計')のように書き換えれば、「合計」といったラベルを表示させることも可能です。 - バージョンによっては
ORDER BYとの併用に制限があるため、並べ替えが必要な場合は注意してください。
-
MySQLで列のデフォルト値を設定する方法|DEFAULTキーワードの使い方を解説
MySQLで列のデフォルト値を設定する方法 MySQLで列にデフォルト値を設定するには、DEFAULTキーワードを使用します。デフォルト値を設定しておけば、INSERT時にその列の値が指定されなかった場合でも自動的に初期値が格納されるため、データの整合性を保ちやすくなります。 ここでは、実際にテーブルを作成し、ALTER TABLE文でデフォルト値を設定する手順をサンプルコード付きで解説します。 1. テーブルの作成 まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable758 ( Id int NOT NULL AUTO_IN
-
MySQLで結果セットを指定した順序どおりに取得する方法
MySQLでIN句を使ってレコードを取得すると、通常はテーブル内の格納順どおりに結果が返されます。しかし、「指定した値の並び順どおりに結果セットを取得したい」というケースもあります。そんなときは、FIND_IN_SET()関数とORDER BY句を組み合わせることで簡単に実現できます。サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。mysql> create table DemoTable1563 -> ( -> StudentId int, -> StudentName varchar(20) -> );Query OK