ソースコード
WITH TEMP AS
(
    SELECT
         MAIN.USER_ID                                                                                   AS USER_ID
        ,MIN(MAIN.STARTED_AT)                                                                           AS STARTED_AT
        ,SUM(SUB.POINT)                                                                                 AS POINT
        ,SUM(CASE WHEN SUB.STATUS != 'AC' AND SUB.SUBMITTED_AT < MAX_SUB.MAX_AC_TIME THEN 1 ELSE 0 END) AS WRONG_ANS
        ,MAX(MAX_SUB.MAX_AC_TIME)                                                                       AS MAX_AC_TIME
    FROM ENTRIES AS MAIN
         INNER JOIN SUBMISSIONS AS SUB
             ON MAIN.CONTEST_ID = SUB.CONTEST_ID
            AND MAIN.USER_ID    = SUB.USER_ID
         INNER JOIN (SELECT CONTEST_ID, USER_ID, PROBLEM_ID, MAX(SUBMITTED_AT) AS MAX_AC_TIME FROM SUBMISSIONS WHERE STATUS = 'AC' AND ENTRY_ID  IS NOT NULL GROUP BY CONTEST_ID, USER_ID, PROBLEM_ID) AS MAX_SUB
             ON SUB.CONTEST_ID = MAX_SUB.CONTEST_ID
            AND SUB.USER_ID    = MAX_SUB.USER_ID
            AND SUB.PROBLEM_ID = MAX_SUB.PROBLEM_ID
    WHERE MAIN.CONTEST_ID = 2
      AND SUB.ENTRY_ID    IS NOT NULL
    GROUP BY MAIN.USER_ID
)
SELECT
     RANK() OVER(ORDER BY POINT DESC, EX_TIME, WRONG_ANS) AS RANK
    ,USER_ID
    ,POINT
    ,EX_TIME
    ,WRONG_ANS
FROM (
    SELECT
         USER_ID
        ,POINT
        ,ABS(strftime('%s', MAX_AC_TIME) - strftime('%s', STARTED_AT)) + (300 * WRONG_ANS) AS EX_TIME
        ,WRONG_ANS
    FROM TEMP
)
WHERE POINT > 0
ORDER BY RANK, WRONG_ANS, USER_ID
;
提出情報
提出日時2022/10/19 21:53:38
コンテスト第3回 SQLコンテスト
問題順位計算
受験者jalapeno
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量100 MB
メッセージ
テストケース(通過数/総数)
1/2
状態
メモリ使用量
データパターン1
AC
100 MB
データパターン2
WA
99 MB