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

ではごきげんよう、

ハーフィズ

Leave a Comment

Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。