0

以下は私のクエリとその出力です。select ステートメントを 1 つだけ使用してクエリを作成することはできますか (クエリには 2 つあります)。これはパフォーマンスを目的としています。

WITH GradePassFail AS (
    SELECT 
        Subject, 
        Grade, 
        CASE WHEN Grade >= 50 THEN 1 ELSE 0 END AS Pass, 
        CASE WHEN Grade < 50 THEN 1 ELSE 0 END AS Fail 
    FROM Grade_report
)
SELECT Subject, MAX(Grade) AS Grade, SUM(Pass) AS Pass, SUM(Fail) AS Fail
FROM GradePassFail
GROUP BY Subject

ここに画像の説明を入力

4

1 に答える 1

3

CASE関数内で合格/不合格のステートメントを実行できますSUM...その後、CTEは必要ありません。

SELECT
    Subject,
    MAX(Grade) Grade,
    SUM(CASE WHEN Grade >= 50 THEN 1 ELSE 0 END) AS Pass,
    SUM(CASE WHEN Grade < 50 THEN 1 ELSE 0 END) AS Fail
FROM
    Grade_report
GROUP BY Subject

ここで確認できます:

http://sqlfiddle.com/#!3/99cd4/7

于 2012-08-05T05:08:03.410 に答える