「GROUP BY」句の基本
3.1 「GROUP BY」句の基本
データグループ化の基本的な考え方を学習します
3.1.1 学習の準備
まずは、「GROUP BY」句を学習するための準備として、新しいテーブルを作成し、データを登録しましょう。
復習
* 新規テーブルの作成
下表のテーブル「orderinfo」テーブルを作成してください。テーブル名:「orderinfo」
項目 データのタイプ 列名 データ型 属性 受注番号 数値(整数) orderno INT PRIMARY KEYAUTO_INCREMENT ユーザー名 文字列(最大半角20文字/全角10文字) user VARCHAR(20) ISBN番号 文字列(最大半角20文字/全角10文字) isbn VARCHAR(20) 注文数 数値(整数) quantity INT 注文日 日付 date date
* 新規テーブルへのデータ登録
次に下記のデータを登録してください。
orderno user isbn quantity date 1 kanda 00001 1 2010-07-01 2 shibuya 00001 2 2010-07-15 3 akiba 00001 1 2010-08-02 4 meguro 00001 3 2010-07-17 5 kanda 00002 1 2010-08-22 6 shibuya 00002 3 2010-09-03 7 kanda 00002 1 2010-07-25 8 meguro 00003 4 2010-07-30 9 ueno 00003 1 2010-08-12 10 shibuya 00003 1 2010-08-21 11 tamachi 00004 2 2010-09-14 12 meguro 00004 3 2010-07-11 13 shibuya 00004 6 2010-07-19 14 akiba 00004 1 2010-08-19 15 kanda 00005 4 2010-09-01 16 tamachi 00005 2 2010-08-22 17 shibuya 00005 1 2010-07-01 18 kanda 00006 1 2010-07-15 19 osaki 00006 1 2010-08-20 20 shibuya 00006 3 2010-07-30 21 meguro 00006 2 2010-09-01 22 tamachi 00006 6 2010-09-30 23 kanda 00007 1 2010-07-11 24 shibuya 00007 3 2010-07-21 25 kanda 00007 2 2010-08-15 26 meguro 00007 1 2010-07-02 27 akiba 00007 4 2010-07-25 28 ueno 00007 1 2010-08-15 29 ueno 00001 1 2010-08-14 30 ueno 00002 1 2010-07-15
* データの確認
データの中身を確認してみましょう。
![]()
3.1.2 「GROUP BY」句の基本
「GROUP BY句」はある特定の列をキーに(グループキーといいます)、データをグループ化するための句です。
書式は下記のようになります。
先程作成した「orderinfo」で見てみましょう。
「orderinfo」のユーザー名には、複数のユーザーが存在しますが、重複しているデータもあります。
これをユーザー毎にグループ化してみましょう。
user列がグループ化され重複が排除されたユーザー名の一覧が取得できました。
TIPS
「GROUP BY」句と似たような働きをする句に、「DISTINCT」句があります。
「DISTINCT」句は、検索結果の重複を排除する機能があります。
書式は下記のようになります。
先程「orderinfo」をuser列でグルーピング化したように、user列の重複を排除するには
となります。
但し「DISTINCT」句は重複を排除するためのものであり、「GROUP BY」句のように、集計関数と同時に使ってグループごとの集計を取るような使い方はできません。