ソースコード
-- 会員の健康診断結果を記録している健康診断テーブル(HEALTH_CHECKUP)より、
-- 会員毎に実施日(CHECKUP_DATE)が直近2回の健康診断結果で、
-- 今回の体重(WEIGHT)から前回の体重を減算した結果が、5kg以上変動した会員を表示しなさい。
-- 体重はkg単位で小数第一位まで登録されているものとする
-- また、変動した体重を算出する際は丸め誤差が発生しないように注意すること。
-- ただし、小数点以下がゼロの場合は整数のみの表示とする。
-- 表示項目は以下とする。(エイリアスを使用し→の項目名とする)
-- 最新の実施日 → CK_DATE
-- MEMBER_CODE → CODE
-- LAST_NAMEとFIRST_NAMEを連結して表示 → NAME
-- 変動した体重 → CHG_WT
-- 表示順
-- 変動した体重の降順
-- MEMBER_CODEの降順
WITH dif_calc AS (
    SELECT
        CHECKUP_DATE
        , MEMBER_CODE
        , WEIGHT
        , (WEIGHT * 10) - (LAG(WEIGHT, 1) OVER(PARTITION BY MEMBER_CODE ORDER BY CHECKUP_DATE ASC)) * 10 AS DIFF1
        , MAX(CHECKUP_DATE) OVER(PARTITION BY MEMBER_CODE ORDER BY CHECKUP_DATE ASC) AS LAST_DATE
    FROM
        HEALTH_CHECKUP
)
SELECT
    CHECKUP_DATE AS CK_DATE
    , dif_calc.MEMBER_CODE AS CODE
    , mst.LAST_NAME || mst.FIRST_NAME AS NAME
    , DIFF1 / 10 AS CHG_WT
FROM
    dif_calc
LEFT JOIN
    MEMBER_MST AS mst
ON dif_calc.MEMBER_CODE = mst.MEMBER_CODE
WHERE
    (ABS(DIFF1) > 50)
    AND
    (CHECKUP_DATE = LAST_DATE)
ORDER BY
    CHG_WT DESC, CAST(CODE AS INT) DESC
;
提出情報
提出日時2024/07/08 17:44:47
コンテスト第13回 SQLコンテスト
問題体重差分
受験者tomtom
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
0/2
状態
メモリ使用量
データパターン1
WA
85 MB
データパターン2
WA
85 MB