OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
    • アイコンOceanBase Cloud
アイコン

OceanBase Cloud

すべてのバージョン

    OceanBase ロゴ

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについてトラストセンター法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBase Cloud
    3. master
    アイコンOceanBase Cloud
    master
    データベース
    • OceanBaseデータベース
    • OceanBase Cloud
    • master

    クエリでの集約関数の使用

    最終更新日:2026-06-03 10:03:39  更新
    シェア
    このページの内容
    集計関数
    例
    クエリでの集約関数の使用

    折りたたみ

    シェア

    本記事では、具体的な例を通じてクエリ内で集約関数を使用する方法を紹介します。

    集計関数

    集計関数は、一連のレコードをスキャンして、単一の行を返します。この一連のレコードは、テーブルまたはビュー、あるいはサブクエリの結果です。

    グループ化クエリでは、集計関数は通常 GROUP BY 句と共に使用され、1つ以上の列の値でグループ分けを行い、各グループごとに1行の結果を返します。

    例

    サンプルテーブルtoys_orderを作成し、注文データを入力します。

    /**/
    obclient> CREATE TABLE toys_order (
      order_id     INTEGER,
      toy_id       INTEGER,
      toy_dealer   VARCHAR(20),
      toy_price    DECIMAL(10, 2),
      toy_amount   INTEGER
    );
    Query OK, 0 rows affected
    
    obclient> INSERT INTO toys_order VALUES ( 1001,1, 'A',53.12,100 ),( 1002,2, 'A',24.8,190 ),( 1003,3, 'A',19.9,330)
          ,( 1004,1, 'B',53.12,50 ),( 1005,2, 'B',24.8,200 ),( 1006,3, 'B',19.9,350 ),( 1007,2, 'A',24.8,100 );
    7 rows in set
    

    クエリでの集約関数の使用

    count()、sum()、avg()、round()、min()、max() を使用して、おもちゃの注文の売上高を集計します。

    obclient> SELECT toy_id
        , count(*)                         order_count
        , sum(toy_amount)                  sum_amount
        , round(avg(toy_amount),2)         avg_amount
        , min(toy_amount)                  min_amount
        ,max(toy_amount)                   max_amount
        FROM toys_order GROUP BY toy_id  ORDER BY toy_id;
    +--------+-------------+------------+------------+------------+------------+
    | toy_id | order_count | sum_amount | avg_amount | min_amount | max_amount |
    +--------+-------------+------------+------------+------------+------------+
    |      1 |           2 |        150 |      75.00 |         50 |        100 |
    |      2 |           3 |        490 |     163.33 |        100 |        200 |
    |      3 |           2 |        680 |     340.00 |        330 |        350 |
    +--------+-------------+------------+------------+------------+------------+
    3 rows in set
    

    OceanBaseデータベースのMySQLモードでは、集約関数を GROUP BY 句と共に使用する場合、SELECT-list 内の列に特別な要件はありません。SELECT-list 内の列が GROUP BY 句内の列と一致する必要がある場合は、MySQLコマンドラインの sql_mode を ONLY_FULL_GROUP_BY に設定する必要があります。例:

    obclient> SHOW VARIABLES LIKE '%sql_mode%';
    +---------------+-------------------------------------------------------+
    | Variable_name | Value                                                 |
    +---------------+-------------------------------------------------------+
    | sql_mode      | PIPES_AS_CONCAT,STRICT_TRANS_TABLES,STRICT_ALL_TABLES |
    +---------------+-------------------------------------------------------+
    1 row in set
    
    obclient> SET SESSION sql_mode='STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY';                                                                                                                                    Query OK, 0 rows affected (0.00 sec)
    Query OK, 0 rows affected
    
    obclient> SELECT toy_id,order_id
        , count(*)                         order_count
        , sum(toy_amount)                  sum_amount
        , round(avg(toy_amount),2)         avg_amount
        , min(toy_amount)                  min_amount
        , max(toy_amount)                  max_amount
         FROM toys_order GROUP BY toy_id  ORDER BY toy_id ;
    
    ERROR 1055 (42000): 'test.toys_order.order_id' is not in GROUP BY
    

    OceanBaseデータベースの現在のバージョンでサポートされている集約関数の詳細については、「SQL構文(MySQLモード)」 の章を参照してください。

    前のトピック

    クエリでの時刻関数の使用
    最後

    次のトピック

    クエリでのNULL関連関数の使用
    次
    このページの内容
    集計関数
    例
    クエリでの集約関数の使用