コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
WITH SUB1 AS (
-- 中間テーブルで対象データの体重と実施日が1つ前の体重を横並びに保持する
SELECT
HC1.CHECKUP_DATE
, HC1.MEMBER_CODE
, HC1.WEIGHT
-- LAG関数で会員毎に実施日が1つまえの体重を取得
, LAG(HC1.WEIGHT, 1) OVER (
PARTITION BY
HC1.MEMBER_CODE
ORDER BY
HC1.CHECKUP_DATE
) AS BEFORE_WT
FROM
HEALTH_CHECKUP AS HC1
)
SELECT
SUB1.CHECKUP_DATE AS CK_DATE
, SUB1.MEMBER_CODE AS CODE
, LAST_NAME || FIRST_NAME AS NAME
-- 丸め誤差が発生するため、10倍して計算した結果を10で割る
, (SUB1.WEIGHT * 10 - SUB1.BEFORE_WT * 10) / 10 AS CHG_WT
FROM
SUB1
-- 会員の姓名を取得するために、会員コードで会員テーブルを内部結合する
INNER JOIN MEMBER_MST AS MM
ON MM.MEMBER_CODE = SUB1.MEMBER_CODE
WHERE
SUB1.CHECKUP_DATE = (
-- 会員毎に直近の実施日を取得して比較する
SELECT
MAX(CHECKUP_DATE)
FROM
HEALTH_CHECKUP
WHERE
MEMBER_CODE = SUB1.MEMBER_CODE
)
-- 計算結果の絶対値が5以上のデータを対象とする
AND ABS((SUB1.WEIGHT * 10 - SUB1.BEFORE_WT * 10) / 10) >= 5
ORDER BY
CHG_WT DESC
, CODE DESC;
提出情報
提出日時 | 2024/05/30 14:45:22 |
コンテスト | 第13回 SQLコンテスト |
問題 | 体重差分 |
受験者 | admin |
状態 (詳細) | AC (Accepted: 正答) |
メモリ使用量 | 85 MB |
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
84 MB
データパターン2
AC
85 MB