コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
--方針:STEP1から5へ順々に正しいセッションIDリストを抽出していく
--計算し易いようにTIMESTAMPをRANKにPROCESSIDを数値に統一する
WITH BASE AS(
SELECT
SESSION_ID,
USER_ID,
RANK()
OVER(
PARTITION BY SESSION_ID,USER_ID
ORDER BY EX_TIMESTAMP) AS TIMERANK,
CAST(SUBSTRING(PROCESS_ID,5,1) AS INTEGER) AS P_ID
FROM PROCESS_LOG
)
--STEP1が正しいSESSION_IDリスト
,ST1 AS (
SELECT
SESSION_ID
FROM BASE
WHERE TIMERANK = 1 AND P_ID = 1
)
--STEP2が正しいSESSION_IDリスト
,ST2 AS(
SELECT
SESSION_ID
FROM BASE
WHERE SESSION_ID IN(SELECT * FROM ST1) AND TIMERANK = 2 AND P_ID = 2)
--STEP3が正しいSESSION_IDリスト
,ST3 AS(
SELECT
SESSION_ID
FROM BASE
WHERE SESSION_ID IN(SELECT * FROM ST2) AND TIMERANK = 3 AND P_ID = 3)
--STEP4が正しいSESSION_IDリスト
,ST4 AS(
SELECT
SESSION_ID
FROM BASE
WHERE SESSION_ID IN(SELECT * FROM ST3) AND TIMERANK = 4 AND P_ID = 4)
--STEP5が正しいSESSION_IDリスト
,ST5 AS(
SELECT
*,
SESSION_ID
FROM BASE
WHERE SESSION_ID IN(SELECT * FROM ST4) AND TIMERANK = 5 AND P_ID = 5)
--まとめ
SELECT
'STEP1' AS PROCESS,
COUNT(*) AS CNT
FROM ST1
UNION ALL
SELECT
'STEP2' AS PROCESS,
COUNT(*) AS CNT
FROM ST2
UNION ALL
SELECT
'STEP3' AS PROCESS,
COUNT(*) AS CNT
FROM ST3
UNION ALL
SELECT
'STEP4' AS PROCESS,
COUNT(*) AS CNT
FROM ST4
UNION ALL
SELECT
'STEP5' AS PROCESS,
COUNT(*) AS CNT
FROM ST5
;
提出情報
提出日時 | 2024/11/11 17:23:17 |
コンテスト | 第10回 SQLコンテスト |
問題 | 顧客行動分析 |
受験者 | yuta |
状態 (詳細) | AC (Accepted: 正答) |
メモリ使用量 | 86 MB |
メッセージ
テストケース(通過数/総数)
4/4
状態
メモリ使用量
データパターン1
AC
85 MB
データパターン2
AC
85 MB
データパターン3
AC
86 MB
データパターン4
AC
85 MB