T-SQL の集計関数を使う 1 - COUNT・SUM

T-SQL の集計関数を使ってみよう 1

今まで SELECT 文でデータをそのまま取得してきましたが、今回は集計関数を使って計算してみましょう。

サンプルデータを生成する

今回、今まで使ってきた Students テーブルに加えて、 Test テーブルと TestResult テーブルを使いますので、以下のスクリプト実行してテーブルとデータを作っておいてください。

※ Students テーブルをまだ作っていない人は、前回の 「クエリーの結果を並べ替える」 のページの上部にありますので、先に Students テーブルを作ってから下のスクリプトを実行してください。

CREATE TABLE Test (
    TestID      INT NOT NULL PRIMARY KEY,
    TestNameEn  NVARCHAR(50) NOT NULL,
    TestNameJp  NVARCHAR(50) NOT NULL,
);

CREATE TABLE TestResult (
    TestResultID INT NOT NULL PRIMARY KEY,
    TestID INT NOT NULL REFERENCES Test (TestID),
    StudentID INT NOT NULL REFERENCES Students (StudentID), 
    Score INT NULL
);

INSERT INTO Test 
    ( TestID, TestNameEn, TestNameJp )
VALUES  
    (1, 'Math 1', N'数学1'),
    (2, 'English 1', N'英語1');

INSERT INTO TestResult
    ( TestResultID, TestID, StudentID, Score )
VALUES
    ( 1, 1, 1, 85),
    ( 2, 1, 2, 60),
    ( 3, 1, 4, 98),
    ( 4, 1, 5, 73),
    ( 5, 2, 1, 77),
    ( 6, 2, 2, NULL),
    ( 7, 2, 3, 92),
    ( 8, 2, 4, 81);

T-SQL の集計関数を使う 1

よく使う SQL 集計関数 - COUNT

COUNT はレコード数を整数で返す SQL Server の関数です。

例えば、TestResult テーブルの TestID が 1 のレコードの数を取得したい時は、COUNT(*) を使って次のように書きます。

SELECT  COUNT(*)
FROM    TestResult
WHERE   TestID = 1;

[ 実行結果 ]
T-SQL の集計関数を使う 2


テストにかかわらず、受けた Student の人数を取得するには、COUNT と DISTINCT を使って次のように取得することができます。

SELECT  COUNT(DISTINCT StudentID)
FROM    TestResult;

[ 実行結果 ]
T-SQL の集計関数を使う 3


よく使う SQL 集計関数 - SUM

SUM は結果セットのなかで、指定したカラムの合計値を返してくれる関数です。

例えば、TestID が 1 の Score の合計値は次のように取得することができます。

SELECT  SUM(Score) AS SUM_Score
FROM    TestResult
WHERE   TestID = 1;

[ 実行結果 ]
T-SQL の集計関数を使う 4


© 2010-2024 SQL Server 入門