SQL の集計関数とその使用法

SQL の集計関数とその使用法

このチュートリアルでは、 SQL のさまざまな集計関数とその使用方法について説明します。SQL では、集計関数を使用して、複数の行のデータを 1 つの集計行に蓄積します。 

SQL の集計関数は、アナリストがデータを要約するときに非常に役立ちます。

目次

SQL で一般的に使用される集計関数

SQL で一般的に使用される集計関数の一部を以下に示します。

SQL の集計関数とその使用法

関数と関数は通貨または整数値でよく使用されることに注意してください。AVG 関数は、平均だけでなく列の平均も返します。また、集計関数、計算の実行時に NULL 値を無視しない唯一の関数です。

以下のサンプルテーブルを使用して、5 つの集計関数を使用していくつかのサンプルコマンドを作成してみましょう。

SQL の集計関数とその使用法

まずはMAX関数を使ってコマンドを作ってみましょう。ProductName列で最も価値の高い製品を見つけたいとしますコマンドは以下の画像のようになります。

SQL の集計関数とその使用法

最も価値の高い製品を見つけているので、ProductPrice列の下にあるその価格を取得する必要があります。出力列の名前を指定するには、必ずエイリアスを付けてください。そのコマンドを実行すると、値が 1 つだけある最高値の製品が表示されます。 

次にMIN関数を使ってコマンドを作ってみましょう。MIN 関数はMAX 関数に似ているため、 MAX 関数で使用したのと同じ例を使用しますが、今回は最小値の積を見つけます。

SQL の集計関数とその使用法

このコマンドを実行すると、サンプル テーブル内の最も低い値の製品がフェッチされます。

それではCOUNT関数を使ってコマンドを作ってみましょう。ProductID列で製品の数量を確認したいとします。コマンドは以下の画像のようになります。

SQL の集計関数とその使用法

このコマンドを実行すると、 ProductID列の下に各製品の数量 とそれぞれの価格が表示されます。

集計関数と GROUP BY 句

ここで、集計関数で複数の列を使用する方法について説明します。これを行うには、 GROUP BY 句を使用する必要があります。

GROUP BY 関数は、各グループから 1 つのレコードを返すため、主に集計関数で使用されます。また、集計を使用しない場合でも、SELECT ステートメント内のすべての列を含める必要があります。

以下のサンプルテーブルを使用して、GROUP BY 句を使用して集計関数を使用する方法を説明します。

SQL の集計関数とその使用法

まず、GROUP BY 句を使用せずにコマンドを実行して、違いを確認してみましょう。ProductName列内の 合計SaleAmountを見つけてみましょう。コマンドは以下の画像のようになります。

SQL の集計関数とその使用法

お気づきのとおり、このコマンドは、このチュートリアルの冒頭で説明した前の例と似ています。このコマンドを実行すると、列SaleAmountの合計金額が単純に計算され、 28になります。

ここで、 GROUP BY 句を使用した別の例を見てみましょう。 

SQL の集計関数とその使用法

GROUP BY 句を使用しているため、複数の列を使用できるようになりました。今回は、カテゴリごとの合計SaleAmountを確認したいと思います。

GROUP BY 句を使用すると、結果に各カテゴリの売上の合計が表示されるようになり、実行すると、結果は次の画像になります。

この例では、GROUP BY 句を使用することが重要です。そうしないとエラーが発生します。これは、Category がGROUP BY 句または集計関数に含まれていないためです。

SQL の集計関数とその使用法

同じ例を考えてみましょう。ただし、今回はProductNameごとに合計SaleAmountも取得します。コマンドは以下の画像のようになります。

SQL の集計関数とその使用法

コマンドを実行すると、結果にはカテゴリ別およびProductNameごとの売上の合計が表示されます。

SQL の集計関数とその使用法

GROUP BY 句を使用せずに複数の列を使用したりアクセスしたりすることはできないことに注意してください。使用すると、コマンドの実行時にエラーが発生します。

SQL Server Management Studio (SSMS) の集計関数

ここで、SQL Server Management Studio集計関数を使用する方法について説明します。例では以下の表を使用します。

SQL の集計関数とその使用法

SalesOrderHeaderテーブルには31,465 行のデータがあります。最初の例では、テーブル内の行を数えることでCOUNT関数を使用する方法を示します。コマンドは以下の画像のようになります。

SQL の集計関数とその使用法

SalesOrderHeader 内のすべての行を正常にカウントし、countofrowsという名前を付けました。このコマンドを実行すると、 31,465 の結果が得られます。

データセットに戻りましょう。同じ集計関数を使用しながら、テーブル内にあるSalespersonID の数を数えてみましょう。コマンドは次のようにする必要があります。

SQL の集計関数とその使用法

コマンドを実行すると、列SalespersonsIDの下のデータが具体的にフェッチされ、 countofsalespersonsという名前の列が得られ、結果は3806になります。

SQL の集計関数とその使用法

単一のクエリでの集計関数の使用

次に、単一のクエリで複数の集計関数を使用する方法について説明します。TotalDue 列TaxAmt列を集計する際にSUMAVG、およびMAX 関数を使用します。 

SQL の集計関数とその使用法

すべての関数の後にカンマを置くことで、単一のクエリで 複数の集計関数を使用できます。

SQL の集計関数とその使用法

このコマンドを実行すると、結果は以下の画像のようになります。 

SQL の集計関数とその使用法

これで、複数の集計関数を使用して、さまざまな列をそれぞれの値とともに表示できるようになりました。 

列を選択するときにGROUP BY 句を使用する必要がある理由を強調するために、エラーが発生するコマンドを実行してみましょう。複数の関数を使用して同じ例を使用しますが、今回はCustomerIDを選択します。

SQL の集計関数とその使用法

ご覧のとおり、 CustomerID が集計関数にもGROUP BY 句にも含まれていないため、コマンドは無効であると表示されます。

GROUP BY 句を使用したサンプル シナリオ

次の例では、コマンドにGROUP BY 句を指定してエラーを修正しましょう。

SQL の集計関数とその使用法

GROUP BY 句CustomerID を追加したところ、 CustomerIDごとにTotalDueTaxAmtの合計、平均、最大値が表示されるようになりました。合計19119 行があることもわかります。

最後の例として、非集計列と式がGROUP BY 句に含まれていることを確認することがなぜ重要なのかを説明します。

SalesOrderHeaderテーブルには、 OrderDate列があります。TotalDueの合計を年ごとに取得したいとします。すべての非集計列と式を指定しない場合は、以下の画像のコマンドを使用する必要があります。

SQL の集計関数とその使用法

どのようにしてエラーではなく結果を取得できるかに注目してください。ただし、レポートを年に 1 つの特定の値に要約することが目標である場合、同じ年に複数のレポートが存在します。

間違いを修正するには、 GROUP BY 句にも式が含まれていることを確認する必要があります。新しいコマンドは次のようになります。

SQL の集計関数とその使用法

コマンドを実行すると、年ごとのOrderDateの合計が正常に取得されたことがわかります。 

SQL 集計関数の HAVING 句
SQL のストアド プロシージャ | 概要
LuckyTemplates で GROUPBY 関数を使用する効果的な方法

結論

要約すると、SQL での集計関数の使用に関する基本的な知識の一部を学習しました。集計関数は、データの分析と要約中にアナリストに利便性を提供するため、大規模なレポートやデータセットを操作する場合に非常に理想的です。 

このチュートリアルが、SQL でのさまざまな集計関数の使用方法をより良く練習するのに役立つことを願っています。このトピックやその他の関連コンテンツについて詳しく知りたい場合は、以下の関連リンクのリストをご覧ください。

ではごきげんよう、

ハーフィズ


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて