ソースコード
DELETE 
FROM
    ITEM 
WHERE
    -- 在庫管理する商品が対象
    STOCK_MANAGEMENT_TYPE = 1 
    AND ( 
        -- 商品コードが在庫テーブルに存在しないこと確認
        NOT EXISTS ( 
            SELECT
                ITEM_CODE 
            FROM
                STOCK 
            WHERE
                STOCK.ITEM_CODE = ITEM.ITEM_CODE
        ) 
        -- 商品コードが在庫テーブルに存在しているが、削除条件を満たしていることを確認
        OR EXISTS ( 
            SELECT
                ITEM_CODE 
            FROM
                STOCK 
            WHERE
                STOCK.ITEM_CODE = ITEM.ITEM_CODE 
            -- 商品コードで集計した結果を判定するためグルーピングをおこなう
            GROUP BY
                ITEM_CODE 
            HAVING
               -- 最終出荷日の最大値が6カ月以上前かチェック
               -- 入荷実績があるがまだ出荷実績がない場合は、最終出荷日はNULLなので削除の対象外となる
               --  (最終出荷日がNULLの場合は対象外とするため、ダミーで'2999-12-31'をセット)
                MAX(IFNULL(LAST_DELIVERY_DATE, '2999-12-31')) <= DATE ('2023-06-01', '-6 months') 
                -- 実在庫数の合計がゼロかチェック
                AND SUM(ACTUAL_AMT) = 0
        )
    );
提出情報
提出日時2023/06/21 09:44:45
コンテスト第7回 SQLコンテスト
問題商品整理
受験者Ginobirian20
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量79 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
78 MB
データパターン2
AC
79 MB