ソースコード
--売上データ(SALES):
--└売上日(SALES_DATE)の期間は2023年6月1日から30日
WITH A AS(
SELECT SALES_NO
FROM SALES
WHERE SALES_DATE BETWEEN '2023-06-01' AND '2023-06-30'),

--売上明細データ(SALES_DTL)
--└売上金額(UNITPRICE × SALES_QTY)
--アイテム別で集計
B AS(
SELECT S.ITEM_CODE AS CODE,I.ITEM_NAME AS NAME,
SUM(S.UNITPRICE * S.SALES_QTY) AS SAL_AMT
FROM SALES_DTL AS S
JOIN A
ON S.SALES_NO = A.SALES_NO
JOIN ITEM AS I
ON S.ITEM_CODE = I.ITEM_CODE
GROUP BY S.ITEM_CODE
ORDER BY SUM(S.UNITPRICE * S.SALES_QTY) DESC,
S.ITEM_CODE DESC),

C AS(
SELECT *,
SUM(SAL_AMT) OVER() AS 'SUM1',
SAL_AMT*1.00 / SUM(SAL_AMT) OVER() AS 'SUM2',
RANK() OVER(ORDER BY SAL_AMT DESC,CODE DESC) AS NUM
FROM B),

D AS(
SELECT
C1.CODE,C1.NAME,C1.SAL_AMT,
C1.SUM1,C1.SUM2,C1.NUM,
SUM(C2.SAL_AMT) AS CML_AMT,
SUM(C2.SAL_AMT)*1.00 / C1.SUM1 AS TTL_COMP
FROM C AS C1
INNER JOIN C AS C2
ON C1.NUM >= C2.NUM
GROUP BY C1.NUM,C1.SAL_AMT
ORDER BY C1.NUM),

--40%以下をランクA、40%より大きく80%以下をランクB、
--それ以外をランクC
E AS(
SELECT *,
(CASE
WHEN TTL_COMP <= 0.4 THEN 'A'
WHEN TTL_COMP > 0.4 AND TTL_COMP <= 0.8 THEN 'B'
ELSE 'C' END) AS RANK
FROM D),

F AS(
SELECT CODE,NAME,CML_AMT,SAL_AMT,
ROUND(SUM2 *100, 1) || "%" AS SAL_COMP,
ROUND(TTL_COMP *100, 1) || "%" AS TTL_COMP,
RANK
FROM E)

SELECT *
FROM F;
提出情報
提出日時2023/12/21 20:59:32
コンテスト第7回 SQLコンテスト
問題ABC分析
受験者inu
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
0/3
状態
メモリ使用量
データパターン1
WA
84 MB
データパターン2
WA
85 MB
データパターン3
WA
85 MB