ソースコード
WITH SUB1 AS ( 
    -- SESSION_ID ごとに EX_TIMESTAMP 順にランクづけし、STEP N と RANK M を一覧にする
    SELECT
        SESSION_ID
        , PROCESS_ID
        , RANK() OVER (PARTITION BY SESSION_ID ORDER BY EX_TIMESTAMP) AS RANK 
    FROM
        PROCESS_LOG 
    ORDER BY
        SESSION_ID ASC
        , EX_TIMESTAMP ASC
) 
, SUB2 AS ( 
    -- STEP の番号 N とランク M が異なる MIN まではカウント対象
    SELECT
        SESSION_ID
        , MIN(RANK) AS MIN 
    FROM
        SUB1 
    WHERE
        CAST(SUBSTR(SUB1.PROCESS_ID, 5, 1) AS INT) != RANK 
    GROUP BY
        SESSION_ID
) 
select 
  process_id as PROCESS
  ,count(distinct sub1.session_id) as CNT
from sub1 
left join sub2 
  on sub1.session_id = sub2.session_id 
where cast(substr(sub1.process_id, 5, 1) as int) < sub2.min
  or sub2.min is null
group by 1
order by 1
提出情報
提出日時2023/12/18 16:23:06
コンテスト第10回 SQLコンテスト
問題顧客行動分析
受験者hattsuriboy
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量91 MB
メッセージ
テストケース(通過数/総数)
3/4
状態
メモリ使用量
データパターン1
AC
85 MB
データパターン2
AC
84 MB
データパターン3
AC
89 MB
データパターン4
WA
91 MB