カテゴリ: COBOL 更新日: 2026/02/19

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などの集計関数と組み合わせることで、より強力な分析ができるようになります。」

生徒

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

先生

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

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

COBOLでORDER BY句はどのように使うのですか?

COBOLでORDER BY句を使うと、SQLの検索結果を指定した列で昇順や降順に並べ替えることができます。たとえば、社員の年齢順や名前順に結果を表示したいときに便利です。
カテゴリの一覧へ
新着記事
New1
C#
C#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう
New2
COBOL
COBOLの文字列検索を完全ガイド!初心者でもわかるINSPECTとUNSTRINGの使い方
New3
C#
C#でXMLバリデーションを完全マスター!XSDスキーマを使ったチェック方法を初心者向けに解説
New4
COBOL
COBOLのEDITING記述子を完全解説!初心者でもわかるPIC Z・\*・\$による整形出力
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.3
Java&Spring記事人気No3
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.4
Java&Spring記事人気No4
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.5
Java&Spring記事人気No5
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方