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;
[ 実行結果 ]