MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

SQL Serverで平均値と最頻値(モード)を求める方法


問題の定義

平均(Mean)とは、データセットに含まれるすべての値の合計を、値の個数で割って求められる代表値のことです。

モード(Mode/最頻値)とは、一連のデータの中で最も多く出現する値のことです。

たとえば、データセットが {1, 2, 3, 4} の場合、平均値は次のように計算されます。

(1 + 2 + 3 + 4) / 4 = 2.5

また、データセットが {1, 2, 3, 4, 1, 1, 1, 1} の場合、「1」が5回出現しているため、モードは 1 となります。

実装例

1. テーブルを作成する

まず、数値を格納するためのテーブルを作成します。

CREATE TABLE NUMBERS (
    value INT
)

2. データを挿入する

作成したテーブルにサンプルデータを挿入します。

INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (2);
INSERT INTO NUMBERS VALUES (3);
INSERT INTO NUMBERS VALUES (4);

3. 平均値を求める

SQL Serverには平均を計算するための組み込み関数 AVG() が用意されています。次のクエリで平均値を取得できます。

SELECT AVG(value) FROM NUMBERS;

4. 重複するデータを挿入する

モードを確認するために、同じ値を持つ行を追加します。

INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);

5. 最頻値(モード)を求める

SQL Serverにはモードを直接求める組み込み関数は存在しないため、GROUP BY で値ごとに出現回数を集計し、COUNT(*) の降順で並べ替えて先頭の1件を取得します。

SELECT TOP 1 value
FROM NUMBERS
GROUP BY value
ORDER BY COUNT(*) DESC

このクエリでは、各値の出現回数をカウントし、最も多い値を上位から1件だけ返します。同率の最頻値が複数存在する場合は、そのうちの1つが返される点に注意してください。すべての最頻値を取得したい場合は、RANK() 関数などを併用するとよいでしょう。

  1. MS SQL Serverでサービスを開始・停止する方法を徹底解説

    MS SQL Serverには、データベースの作成や管理のために、2つの主要なサービスが用意されています。さらに、その他の目的に対応するための追加サービスも複数提供されています。MS SQL Serverの主要なサービスMS SQL Serverの2つの主要なサービスは以下の通りです。SQL ServerSQL Server Agentその他の追加サービスは以下の通りです。SQL Server BrowserSQL Server Full Text SearchSQL Server Integration ServicesSQL Server Reporting ServicesSQL Ser

  2. Microsoft SQL Serverのデータベース破損と高度な復旧テクニック徹底解説

    本記事では、Microsoft® SQL Server®のデータベースレベルで発生しうる破損の種類、その検出方法、そして高度な復元および修復テクニックを用いた修正方法について詳しく解説します。 はじめに SQL Serverは、高度な内部構造と優れた信頼性により、現在もっとも広く利用されているリレーショナルデータベース管理システム(RDBMS)のひとつです。多くの企業が重要なビジネスデータの保存・管理のためにSQL Serverデータベースを採用しています。 企業はデータベース管理者(DBA)に対して、データベースのパフォーマンス、メンテナンス、セキュリティの継続的な向上を期待しています。しか