ソースコード
-- サブクエリで平均点と標準偏差を計算
WITH Stats AS (
    SELECT
        AVG(POINT) AS avg_point,
        SQRT(SUM(POWER(POINT - avg_point, 2)) / COUNT(*)) AS stddev
    FROM
        TEST_RESULTS,
        (SELECT AVG(POINT) AS avg_point FROM TEST_RESULTS WHERE TEST_ID = '100') AS subquery
    WHERE
        TEST_ID = '100'
),
-- 偏差値を計算
Deviations AS (
    SELECT
        USER_ID AS USER,
        POINT AS PT,
        CASE
            WHEN s.stddev = 0 THEN 50
            ELSE ROUND((POINT - s.avg_point) * 10 / s.stddev + 50, 1)
        END AS DEV_VAL
    FROM
        TEST_RESULTS t
    JOIN
        Stats s ON t.TEST_ID = '100'
    WHERE
        t.TEST_ID = '100'
)
-- 結果を表示
SELECT
    USER,
    PT,
    DEV_VAL
FROM
    Deviations
ORDER BY
    DEV_VAL DESC,
    USER ASC;
提出情報
提出日時2024/09/19 16:07:58
コンテスト第5回 SQLコンテスト
問題偏差値の算出
受験者lulei
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量86 MB
メッセージ
テストケース(通過数/総数)
4/4
状態
メモリ使用量
データパターン1
AC
86 MB
データパターン2
AC
84 MB
データパターン3
AC
86 MB
データパターン4
AC
84 MB