カテゴリ: COBOL 更新日: 2025/12/08

COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計

SELECT文のORDER BYやGROUP BYを活用する方法
SELECT文のORDER BYやGROUP BYを活用する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、COBOLでデータベースからデータを取得するとき、並べ替えや集計はできますか?」

先生

「もちろんです。SQLのORDER BYGROUP BYを使うと、データを並べ替えたり、特定の条件で集計することができます。」

生徒

「具体的にはどう書くんですか?」

先生

「それでは、順番にわかりやすく説明していきます。」

1. ORDER BYとは?

1. ORDER BYとは?
1. ORDER BYとは?

COBOLでSQLを使う場合、ORDER BYは検索結果を特定の順序で並べ替えるための句です。例えば社員テーブルから社員を年齢順に取得したい場合に便利です。並べ替えを理解すると、データを見やすく整理して出力することができます。

2. GROUP BYとは?

2. GROUP BYとは?
2. GROUP BYとは?

GROUP BYは、特定の列でデータをグループ化し、集計関数(SUM, COUNT, AVGなど)と組み合わせて使用します。たとえば、部署ごとの社員数を調べる場合に使います。データの集計を行うことで、分析やレポート作成が簡単になります。

3. ORDER BYの基本例

3. ORDER BYの基本例
3. ORDER BYの基本例

WORKING-STORAGE SECTION.
01  EMP-NAME   PIC X(20).
01  EMP-AGE    PIC 9(3).

PROCEDURE DIVISION.
    EXEC SQL
        SELECT EMP_NAME, AGE
        INTO :EMP-NAME, :EMP-AGE
        FROM EMPLOYEE
        ORDER BY AGE DESC
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY "取得成功:" EMP-NAME " (年齢:" EMP-AGE ")"
    ELSE
        DISPLAY "取得失敗:" SQLCODE
    END-IF.

取得成功:山田太郎 (年齢:45)
取得成功:田中花子 (年齢:38)

この例では、社員を年齢の降順で並べ替えて取得しています。ASCを使うと昇順、DESCを使うと降順になります。

4. GROUP BYの基本例

4. GROUP BYの基本例
4. GROUP BYの基本例

WORKING-STORAGE SECTION.
01  DEPT-NAME  PIC X(10).
01  EMP-COUNT  PIC 9(4).

PROCEDURE DIVISION.
    EXEC SQL
        SELECT DEPT, COUNT(*)
        INTO :DEPT-NAME, :EMP-COUNT
        FROM EMPLOYEE
        GROUP BY DEPT
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY DEPT-NAME " 部署の社員数:" EMP-COUNT
    ELSE
        DISPLAY "取得失敗:" SQLCODE
    END-IF.

営業 部署の社員数:12
開発 部署の社員数:8

この例では、部署ごとに社員数を集計しています。部署名(DEPT)でグループ化し、COUNT関数で社員数を計算しています。

5. ORDER BYとGROUP BYを組み合わせる

5. ORDER BYとGROUP BYを組み合わせる
5. ORDER BYとGROUP BYを組み合わせる

ORDER BYとGROUP BYは組み合わせることができます。例えば部署ごとの社員数を降順に並べたい場合です。


EXEC SQL
    SELECT DEPT, COUNT(*)
    INTO :DEPT-NAME, :EMP-COUNT
    FROM EMPLOYEE
    GROUP BY DEPT
    ORDER BY COUNT(*) DESC
END-EXEC.

このSQLでは、社員数の多い部署から順に結果が表示されます。分析レポートや統計データ作成の際に非常に役立ちます。

6. 初心者向けポイント

6. 初心者向けポイント
6. 初心者向けポイント

ORDER BYやGROUP BYを使うことで、データを見やすく整理したり、集計して分析することができます。SQLコードをCOBOLに埋め込む際には、必ずEXEC SQLEND-EXECで囲むこと、またSQLCODEでエラーを確認することが安全です。初心者でも順番に理解しながら書くことで、データベース操作が楽になります。

まとめ

まとめ
まとめ

ORDER BYとGROUP BYで広がるCOBOLのデータ活用

この記事では、COBOLでSQLを使用するときに重要となるORDER BY句とGROUP BY句のしくみを丁寧に学びました。ORDER BYは並べ替え、GROUP BYは集計という役割を持ち、どちらも大量のデータを扱う現場で非常によく使われます。とくに社員情報や売上データのように規模が大きく、分類や整理を必要とする場面では、これらの句を適切に活用することで処理の流れが明確になり、結果をわかりやすく出力できます。さらに、COBOLのプログラム内でSQLを実行する際のEXEC SQLとEND-EXECの扱い、SQLCODEによる取得確認など、基礎的でありながら大切なポイントも整理しました。

ORDER BYは、昇順と降順を意識するだけで狙った順序でデータを取り出せます。名前順、年齢順、売上順、日付順など、順番を定義するだけで見やすい並びをつくり出すことができます。GROUP BYは、集計処理に欠かせない要素で、部署別人数、月別売上、カテゴリ別件数など、多様な分析に応用できます。COUNT、SUM、AVG、MAX、MINといった集計関数と組みあわせることで、実務に役立つデータ整理が可能になります。これらを組み合せたORDER BY+GROUP BYは、分析業務の中でも特に出番が多く、ビジネスレポート作成に欠かせない知識です。

COBOLとSQLを組み合わせる最大の利点は、レガシー環境でも柔軟なデータ処理ができる点にあります。長年運用されているシステムの中でも、SQLを活用することで新しい分析ニーズに応えやすくなります。また、SQLは汎用性が高く、ORDER BYやGROUP BYを使えるようになることで、業務で扱う幅広いデータの分類・並べ替え・集計が行いやすくなり、COBOL開発者としてのスキルも大きく向上します。

ORDER BYとGROUP BYのサンプルプログラム(振り返り)


WORKING-STORAGE SECTION.
01  WS-DEPT      PIC X(10).
01  WS-COUNT     PIC 9(4).
01  WS-AGE       PIC 9(3).
01  WS-NAME      PIC X(20).

PROCEDURE DIVISION.
    EXEC SQL
        SELECT DEPT, COUNT(*)
        INTO :WS-DEPT, :WS-COUNT
        FROM EMPLOYEE
        GROUP BY DEPT
        ORDER BY COUNT(*) DESC
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY WS-DEPT " 部署:社員数 " WS-COUNT
    ELSE
        DISPLAY "取得エラー:" SQLCODE
    END-IF.

    EXEC SQL
        SELECT EMP_NAME, AGE
        INTO :WS-NAME, :WS-AGE
        FROM EMPLOYEE
        ORDER BY AGE ASC
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY "名前:" WS-NAME " 年齢:" WS-AGE
    ELSE
        DISPLAY "取得エラー:" SQLCODE
    END-IF.

学んだ内容の総まとめ

ORDER BYは「整列」、GROUP BYは「分類と集計」という基本を理解することで、COBOL×SQLのデータ操作は一気に扱いやすくなります。実務では、社員マスタ、売上テーブル、ログデータなど膨大な情報を扱う場面が多いため、並び替えと集計は欠かせません。これらの句の理解が深まれば、分析処理・レポート出力・統計作成など幅広い業務で正確かつ効率的にデータを扱えるようになります。 データを意味ごとにグループ化し、必要な順序で整頓することで、業務で求められる成果物の品質が向上します。ORDER BYとGROUP BYの応用は、分析的視点を持つうえでも重要であり、今回学んだ内容を丁寧に積み重ねることで、より高度なSQL活用へとつながります。

先生と生徒の振り返り会話

生徒

「先生、ORDER BYとGROUP BYを使えるようになると、COBOLのデータ処理ってすごく便利になるんですね。」

先生

「その通りです。並べ替えと集計を理解すれば、実務で求められる多くのレポートや分析に対応できますよ。」

生徒

「ORDER BYは順番を決める句で、GROUP BYは分類して集計するための句でしたよね?」

先生

「よく覚えていますね。さらにCOUNTやSUMなどの集計関数と組み合わせることで、より強力な分析ができるようになります。」

生徒

「なるほど……じゃあ、業務データのレポート作成にも応用できますね!」

先生

「ええ、実際の現場では非常によく使われます。今日学んだ内容をしっかり身につけて、どんなデータも整理できる技術を磨いていきましょう。」

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方