ソースコード
--平均
WITH TEST_AVG AS (
    SELECT
        AVG(POINT) AS P_AVG
    FROM
        TEST_RESULTS
    WHERE
        TEST_ID = '100'
),
--分散
TEST_DISP AS (
    SELECT
        AVG(T.ITEM_3) DISPERSION
    FROM (
        SELECT
            P_AVG AS ITEM_1,
            T.POINT - P_AVG AS ITEM_2,
            POWER(T.POINT - P_AVG, 2) AS ITEM_3
        FROM TEST_RESULTS T
        CROSS JOIN TEST_AVG A
        WHERE TEST_ID = '100'
    ) T
),
--標準偏差
TEST_SD AS (
    SELECT
        SQRT(DISPERSION) AS SD
    FROM TEST_DISP
)
SELECT
    USER_ID AS USER,
    POINT AS PT,
    CASE SD
        WHEN 0 THEN 50
        ELSE ROUND(((POINT - P_AVG) * 10 / SD) + 50, 1)
    END AS DEV_VAL
FROM
    TEST_RESULTS
CROSS JOIN
    TEST_AVG
CROSS JOIN
    TEST_SD
WHERE
    TEST_ID = '100'
ORDER BY
    DEV_VAL DESC,
    USER ASC
;
提出情報
提出日時2023/02/23 15:30:15
コンテスト第5回 SQLコンテスト
問題偏差値の算出
受験者daidai07
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量76 MB
メッセージ
テストケース(通過数/総数)
4/4
状態
メモリ使用量
データパターン1
AC
75 MB
データパターン2
AC
75 MB
データパターン3
AC
76 MB
データパターン4
AC
76 MB