コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
with
--開始時刻ひも付け用
entry as (
select ENTRY_ID,
STARTED_AT
from ENTRIES
where CONTEST_ID = 2
),
--最後の正解ACはいつなのか(終了時刻)
--各設問ごとに、ACで切って計算するらしい・・・
last_time as (
select ENTRY_ID,
PROBLEM_ID,
MAX(SUBMITTED_AT) as "提出時刻"
from SUBMISSIONS
where CONTEST_ID = 2
and ENTRY_ID is not null
and STATUS = 'AC'
group by ENTRY_ID,PROBLEM_ID
),
--上記2テーブルを提出履歴と内部結合
es as (
select USER_ID,
PROBLEM_ID,
POINT,
提出時刻,
STARTED_AT as "開始時刻",
(case STATUS when 'WA' then 1 else 0 end) as "誤答フラグ"
from SUBMISSIONS
inner join entry using(ENTRY_ID)
inner join last_time using(ENTRY_ID,PROBLEM_ID)
--各設問の最終提出時刻以前のデータだけ集計したい
where SUBMITTED_AT <= 提出時刻
),
--集約
es_sum as (
select USER_ID,
sum(POINT) as "POINT",
sum(誤答フラグ) as "WRONG_ANS",
max(提出時刻) as 提出時刻,
max(開始時刻) as 開始時刻
from es
group by USER_ID
),
--経過時間の計算
temp as (
select
USER_ID,
POINT,
strftime('%s',提出時刻) - strftime('%s',開始時刻) + 5*60*WRONG_ANS as "EX_TIME",
WRONG_ANS
from es_sum
)
select rank()OVER(order by POINT desc, EX_TIME asc) as "RANK",
USER_ID,
POINT,
EX_TIME,
WRONG_ANS
from temp
order by 1,5,2
;
提出情報
提出日時 | 2022/12/05 23:51:18 |
コンテスト | 第3回 SQLコンテスト |
問題 | 順位計算 |
受験者 | keisuke_nakata |
状態 (詳細) | AC (Accepted: 正答) |
メモリ使用量 | 78 MB |
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
76 MB
データパターン2
AC
78 MB