ソースコード
--商品ごとの受注数を求める
WITH QTY AS(
SELECT
    OD.ITEM_CODE
    ,I.ITEM_NAME
    ,SUM(OD.ORDER_QTY) AS ORDER_QTY
    ,MAX(O.ORDER_DATE) AS MAX_DATE
FROM
    ORDERS AS O
JOIN
    ORDERS_DTL AS OD
ON
    O.ORDER_NO = OD.ORDER_NO
JOIN
    ITEM AS I
ON
    I.ITEM_CODE = OD.ITEM_CODE
WHERE
    O.ORDER_DATE BETWEEN '2023-04-01' AND '2023-06-30'
GROUP BY
    OD.ITEM_CODE
    ,I.ITEM_NAME
ORDER BY
    OD.ITEM_CODE
)
--期間内に受注がない商品も表示させる
,ALL_ITEM AS(
SELECT
    I.ITEM_CODE
    ,I.ITEM_NAME
    ,Q.ORDER_QTY
    ,Q.MAX_DATE
FROM
    ITEM AS I
LEFT JOIN
    QTY AS Q
ON
    I.ITEM_CODE = Q.ITEM_CODE
)
--RANKを出す
,RANK AS(
SELECT
    ITEM_CODE
    ,ITEM_NAME
    ,CASE WHEN ORDER_QTY >0 THEN
        RANK()
            OVER(ORDER BY ORDER_QTY DESC,MAX_DATE DESC,ITEM_CODE DESC)
        ELSE 0 END AS ITEM_POPULAR_RANK
FROM
    ALL_ITEM
)

UPDATE
    ITEM
SET
    ITEM_POPULAR_RANK = R.ITEM_POPULAR_RANK
FROM
    RANK AS R
WHERE
    ITEM.ITEM_CODE = R.ITEM_CODE;
提出情報
提出日時2023/08/21 23:41:22
コンテスト第8回 SQLコンテスト
問題人気順位
受験者ebizo777
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量78 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
78 MB
データパターン2
AC
77 MB