集約関数を使いこなす

集約関数を取り扱う 「第3回:結果データを上手にまとめるには?(http://www.thinkit.co.jp/article/97/3/)」に引き続き、結果をまとめあげる部分について触れていきます。今回のテーマはGROUP BY句で用いる集約関数を、いかに処理するかということです。

田中 宏昌

2008年7月23日 20:00

集約関数を取り扱う

 「第3回:結果データを上手にまとめるには?(http://www.thinkit.co.jp/article/97/3/)」に引き続き、結果をまとめあげる部分について触れていきます。今回のテーマはGROUP BY句で用いる集約関数を、いかに処理するかということです。

 複雑で巨大なクエリを行った結果を端的に示すため、通常、平均値やデータの個数、株価などでは独自の指標など、さまざまな値を計算します。

 ストアドプロシージャーを使って複雑な関数を使うという方法もありますが、ここでは、ごく一般的に用いられている集約関数を用いることにします。複雑な計算も、これら基本的な集約関数の組み合わせで実現できる場合が多くあります。

 基本的な集約関数を図1の上に示します。SUM関数やCOUNT関数などは、おなじみでしょう。

SUM関数の取り扱い

 いきなり一般論だと分かりにくいので、まずはSUM関数を例に、全体の流れを示します。これは、ほかの集約関数でもほぼ同じ流れです。

 ポイントは、「2段階で」計算するということです。

 SUM関数の場合、サーバーごとに、普通にSUM関数を含む集計クエリを行います。例えば、図1では、以下のようなクエリを行います。これが第1段階です。

SELECT [商品], SUM([金額]) AS [合計金額]
FROM [テーブル]
GROUP BY [商品];

 このクエリの結果は、サーバーごとに作成されるため、最終的にはこれらをまとめた仕上げのクエリが必要です。図1(下)では、親サーバーにて第1段階の結果を1つのテーブル上にマージし(図1(下)の2.のプロセス)、このマージしたテーブルに対して、さらに同じ集計クエリを行います。

SELECT [商品], SUM([金額]) AS [合計金額]
FROM [各サーバーの結果をマージしたテーブル]
GROUP BY [商品];

 この2段階の集計クエリにより、期待する結果が得られます。

 次にそのほかの集約関数での実現方法について紹介しましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30