ソースコード
WITH tmp AS (
    SELECT
        USER_ID
        , POINT
        , AVG(POINT) OVER() AS AVG  -- 平均
        , POINT - AVG(POINT) OVER() AS DIFF -- 個々の点数の平均との差
        , POW(POINT - AVG(POINT) OVER(), 2) AS POWER -- (個々の点数の平均との差)の二乗
    FROM
        TEST_RESULTS
    WHERE
        TEST_ID = 100
)
, STDEV AS (
    SELECT
        -- AVG(POWER) AS VARIANCE   -- 分散
        SQRT(AVG(POWER)) AS STDEV   -- 標準偏差
    FROM
        tmp
)
SELECT
    tmp.USER_ID AS USER
    , tmp.POINT AS PT
    , CASE WHEN STDEV.STDEV = 0 THEN 50
        ELSE ROUND(((tmp.DIFF * 10.0) / STDEV.STDEV) + 50.0, 1)
        END AS DEV_VAL
FROM
    tmp
CROSS JOIN
    STDEV
ORDER BY
    DEV_VAL DESC
    , USER ASC
;
提出情報
提出日時2024/01/29 10:16:55
コンテスト第5回 SQLコンテスト
問題偏差値の算出
受験者maori
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
4/4
状態
メモリ使用量
データパターン1
AC
85 MB
データパターン2
AC
82 MB
データパターン3
AC
84 MB
データパターン4
AC
84 MB