ソースコード
SELECT
    SUB.ORDER_DATETIME AS ORDER_DATE 
        -- 列に別名を付けている
    , SUB.MEMBER_CODE AS CODE        
        -- 列に別名を付けている
    , CASE MM.OPTOUT_TYPE
        -- 会員データ(MEMBER_MST)のオプトアウト区分(OPTOUT_TYPE)が、0 の場合は「可」、1 の場合は「不可」、それ以外は「不明」とOPTOUT欄に表示しなさい。
        WHEN 0 THEN '可'
             -- MM後で定義する 定義の順序は逆淳でもいい
        WHEN 1 THEN '不可' 
        ELSE '不明' 
        END AS OPTOUT 
FROM
    ( 
        -- 会員毎に7月に初めて受注した日付を取得
        SELECT
            MEMBER_CODE
            , LAST_NAME
            , FIRST_NAME
            , MIN(ORDER_DATETIME) AS ORDER_DATETIME
            , MIN(DATE (ORDER_DATETIME)) AS M_DATE 
        FROM
            EC_ORDERS 
        WHERE
            -- DATE関数で日付のみに編集してから7月の受注データを抽出
            DATE (ORDER_DATETIME) BETWEEN '2023-07-01' AND '2023-07-31' 
        GROUP BY
            MEMBER_CODE 
    ) AS SUB 
    -- オプトアウト区分を取得するため、会員テーブルを内部結合
    INNER JOIN MEMBER_MST AS MM 
        ON SUB.MEMBER_CODE = MM.MEMBER_CODE 
WHERE
    -- 7月に初めて受注した日付から1年より前に、受注データがあるか存在チェック
    EXISTS ( 
        SELECT
            ORDER_NO 
        FROM
            EC_ORDERS 
        WHERE
            SUB.MEMBER_CODE = MEMBER_CODE 
            AND DATE (ORDER_DATETIME) < DATE (SUB.M_DATE, '-1 year')
    ) 
    -- 7月に初めて受注した前日から1年前までに、受注データが存在しないかチェック
    AND NOT EXISTS ( 
        SELECT
            ORDER_NO 
        FROM
            EC_ORDERS 
        WHERE
            SUB.MEMBER_CODE = MEMBER_CODE 
            AND DATE (ORDER_DATETIME) BETWEEN DATE (SUB.M_DATE, '-1 year') AND DATE (SUB.M_DATE, '-1 day')
    ) 
ORDER BY
    SUB.ORDER_DATETIME DESC
    , SUB.MEMBER_CODE DESC;
提出情報
提出日時2023/10/26 10:03:58
コンテスト第9回 SQLコンテスト
問題クーポン配布対象
受験者TsonWa
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量78 MB
メッセージ
テストケース(通過数/総数)
0/2
状態
メモリ使用量
データパターン1
WA
77 MB
データパターン2
WA
78 MB