ソースコード
SELECT
    RANK() over (order by POINT DESC, A_time + PENALTY ASC) AS RANK
    ,USER_ID
    ,POINT
    ,A_time + PENALTY AS EX_TIME
    ,WRONG_ANS
FROM
    (
    SELECT
        Points.USER_ID
        ,Points.POINT
        ,Points.A_time
        ,CASE WHEN SUB_PENALTY.WA_CNT IS NULL
              THEN 0 ELSE SUB_PENALTY.WA_CNT 
         END AS WRONG_ANS
            
        ,CASE WHEN SUB_PENALTY.PENALTY IS NULL
            THEN 0 ELSE SUB_PENALTY.PENALTY
         END AS PENALTY
    FROM
        (
        SELECT
            USER_ID
            ,SUM(POINT) AS POINT
            ,MAX(A_time) AS A_time
        FROM
            (
            SELECT
                PROBLEM_ID
                , E.USER_ID
                , E.ENTRY_ID
                ,SUBMITTED_AT
                ,STATUS
                ,POINT
                ,STARTED_AT
                ,strftime('%s',SUBMITTED_AT) - strftime('%s',STARTED_AT) AS A_time
                
            FROM
                SUBMISSIONS AS S
                INNER JOIN ENTRIES AS E
                    ON S.ENTRY_ID = E.ENTRY_ID
            WHERE
                S.CONTEST_ID = 2
                AND STATUS = 'AC'
            ) AS T_Point
        GROUP BY USER_ID
        HAVING SUM(POINT) > 0
        ) AS Points
    LEFT OUTER JOIN 
    
        (
        SELECT
            USER_ID
            ,COUNT(USER_ID) AS WA_CNT
            ,COUNT(USER_ID) * 300 AS PENALTY
        FROM
            (
            SELECT 
                SUB_AC.USER_ID
                ,SUB_AC.PROBLEM_ID
                ,SUB_WA.SUBMITTED AS WA_Submit
                ,SUB_AC.SUBMITTED AS AC_Submit
            FROM
                (
                SELECT
                    USER_ID
                    ,PROBLEM_ID
                    ,STATUS
                    ,strftime('%s',SUBMITTED_AT) AS SUBMITTED
                FROM
                    SUBMISSIONS
                WHERE 
                    STATUS = 'WA'
                    AND ENTRY_ID IS NOT NULL
                ) AS SUB_WA
            INNER JOIN
            
                (
                SELECT
                    USER_ID
                    ,PROBLEM_ID
                    ,STATUS
                    ,SUBMITTED_AT
                    ,strftime('%s',SUBMITTED_AT) AS SUBMITTED
                FROM
                    SUBMISSIONS
                WHERE 
                    STATUS = 'AC'
                    AND ENTRY_ID IS NOT NULL
                    
                    
                ) AS SUB_AC
            
                ON SUB_WA.USER_ID = SUB_AC.USER_ID
                AND SUB_WA.PROBLEM_ID = SUB_AC.PROBLEM_ID
            WHERE
                WA_Submit < AC_Submit
            ) AS WAs
        GROUP BY 
            USER_ID
        ) AS SUB_PENALTY
        
        ON Points.USER_ID = SUB_PENALTY.USER_Id
    ) AS TOTAL
ORDER BY
    RANK, WRONG_ANS, USER_ID




提出情報
提出日時2025/02/12 18:40:20
コンテスト第3回 SQLコンテスト
問題順位計算
受験者chibisuke1016
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量86 MB
メッセージ
テストケース(通過数/総数)
1/2
状態
メモリ使用量
データパターン1
AC
85 MB
データパターン2
WA
86 MB