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);
よく使う SQL 集計関数 - COUNT
COUNT はレコード数を整数で返す SQL Server の関数です。
例えば、TestResult テーブルの TestID が 1 のレコードの数を取得したい時は、COUNT(*) を使って次のように書きます。
SELECT COUNT(*) FROM TestResult WHERE TestID = 1;
[ 実行結果 ]
テストにかかわらず、受けた Student の人数を取得するには、COUNT と DISTINCT を使って次のように取得することができます。
SELECT COUNT(DISTINCT StudentID) FROM TestResult;
[ 実行結果 ]
よく使う SQL 集計関数 - SUM
SUM は結果セットのなかで、指定したカラムの合計値を返してくれる関数です。
例えば、TestID が 1 の Score の合計値は次のように取得することができます。
SELECT SUM(Score) AS SUM_Score FROM TestResult WHERE TestID = 1;
[ 実行結果 ]