SUM関数のやり方で、ほかの集約関数を実現する

SUM関数のやり方で、ほかの集約関数を実現する

 SUM関数では、2段階に分けて集計を行いました。同じように、多くのGROUP BY 句の集約関数は、2段階で実現されます。

 SUM関数では、第1段階、第2段階ともにSUM関数でしたが、ほかの集約関数では、それが変わります。集約関数の実施方法を図2上にまとめました。それぞれの集約関数を用いた値の求め方についてみていきましょう。

 COUNT関数は、該当する行数を数える関数です。

 第1段階はCOUNT関数を、第2段階では、第1段階の結果を合計するSUM関数を用いることにより実現できます。

 なお、DISTINCT句を用いる場合には、次の例のように第1段階で指定します。

第1段階 : SELECT COUNT(DISTINCT [値]) AS [暫定行数] ...
第2段階 : SELECT SUM([暫定行数]) AS [行数] ...

 AVG関数は、平均値を求める関数です。SUM関数とCOUNT関数を組み合わせることにより実現できます。

 第1段階はSUM関数およびCOUNT関数による値の両方を求めます。それらを、第2段階で分母分子に用いてAVG関数の結果を得ます。

 なお、第2段階において、該当するレコード数が無い場合にエラーが出ないよう、IF文まどで分岐させてください。次のようなクエリになるでしょう。

第2段階 : SELECT IF(SUM([暫定行数]>0, SUM([暫定合計])÷SUM([暫定行数]), NULL)...

 MIN関数およびMAX関数はSUM関数同様にシンプルです。

 第1段階、第2段階ともに、MIN関数またはMAX関数を適用します。

STD, STDDEV関数を実現する

 これまでの集約関数は、2段階で実現できましたが、標準偏差を求めるSTD, STDDEV関数は、上記の集約関数を2サイクルまわす必要があるので、結果、4段階のクエリになります。

 最初に、平均値(AVG)、およびデータの個数(COUNT)を計算します(最初のサイクル)。求めた平均値とデータの個数を用いて2サイクル目で標準偏差を求めます。

 この流れを図2の下に示します。具体的には一度、親サーバーで集計した後、再び並列にクエリを行い、再度親サーバーで集計するという流れになります。

 なお、標準偏差を算出した後に、各要素の偏差値を求める場合には、2サイクル目の第1段階を集計クエリとするのではなく、平均との差分をダンプし、2段階目で標準偏差を出した後、偏差値を計算するといった流れにすることも考慮すべきでしょう。こうすることで、全体の計算コストを低くすることができます。

 2サイクル目は以下のようになります。

第1段階 : SELECT ([値]-[平均値]) AS [差分] ...
第2段階の1 : SELECT SQRT(SUM([差分]×[差分])÷[個数]) AS [標準偏差] ...
第2段階の2 : SELECT (50.0 + [差分] ÷ [標準偏差]) AS [偏差値] ...

 次に集約関数を利用する場合の注意点を紹介します。

人気記事トップ10

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

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

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 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