Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

グループごとに集計を行う - GROUP BY句 : SQL入門講座



クエリは「問い合わせ」と日本語訳される場合があります。既存テーブルのデータ加工を得意にしますが、その中でも集計を行なう機能は代表的なものです。今回、集計機能を持つGROUP BY句を取り上げます。

GROUP BY句 構文

GROUP BY句とは、指定したフィールド内の同じデータを1つのグループとして、そのグループごとに集計を行うSQL構文です。

  • 複数のフィールドを指定した場合、組み合わせの数だけグループ化されます。
  • 全フィールドをあらわすアスタリスク(*)で選択したフィールドは、グループ化できません。

SELECT * FROM 生徒管理 GROUP BY 性別; → ×

  • GROUP BY句で指定したフィールドは、必ずSELECT句にも指定します。
サンプルテーブル

サンプルテーブル(生徒管理)を下記のように用意します。

ID 生徒名 性別
1 松永 良子 女性
2 田口 きさよ 女性
3 鈴木 真一 男性
4 佐藤 信二 男性
構文
〜 GROUP BY fieldname
引数 意味 指定
fieldname フィールド名を指定します。 省略不可。
サンプル構文

「生徒管理」テーブルを元に、性別でグループを行いレコード件数を求めます。 また、AS句を用いて「カウント」フィールドを新規作成し、そのレコード件数を代入します。

  • SELECT Count(ID) AS カウント FROM 生徒管理 GROUP BY 性別;

ADOXを用いた事例

ADOXを用いて以下のようにSQLを実行します。

Sub MySQLGROUPBY()

On Error GoTo エラー

    Dim cat As ADOX.Catalog
    Dim cmd As ADODB.Command
    
    'カレントデータベースに接続します。
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = CurrentProject.Connection
    
    'クエリを定義します。
    Set cmd = New ADODB.Command
    cmd.CommandText = "SELECT Count(ID) AS カウント FROM 生徒管理 GROUP BY 性別;"
    '選択クエリを作成します。
    cat.Views.Append "Q_生徒管理", cmd
        
    Set cmd = Nothing
    Set cat = Nothing
    
    Exit Sub
    
エラー:
    
    If Err.Number = -2147217816 Then
        cat.Views.Delete "Q_生徒管理" 'クエリを削除します。
        Resume
    Else
        MsgBox Err.Number & " : " & Err.Description
    End If
    
End Sub
留意点
  1. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
  2. 同名のクエリが既に存在している場合、Deleteメソッドを用いて削除します。
結果
  1. 下記のようにデータが表示されます。

クエリで作成すると・・・

このSQLステートメントをAccessオブジェクトのクエリで作成すると、下記のようになります。

2004/08/21

ページの先頭へ 前ページへ戻る

 


グループごとに集計を行う - GROUP BY句 : SQL入門講座


-Microsoft Access Club-

cPanelとPLESKインストール済みのアダルトサイト対応レンタルサーバーをご提供しています。もちろん、海外大手のデータセンターにサーバー機器を収納します。
cPanelやPLESKをインストールしたレンタルサーバー。
アダルトサイトにも対応済み。
海外大手データセンターにサーバー機器を収納。