ソースコード
/*
地区毎の学校の保険データを集計した学校保健テーブル(SCHOOL_HEALTH)より、
調査年(SURVEY_YEAR)が2019年のデータを年齢・性別ごとに身長、体重それぞれの平均値を算出して
四捨五入した値が、平均値以上の地区の割合を表示しなさい。 
地区毎の集計人数は同じであるとし、各地区の平均値から全体の平均値をそのまま算出してよいものとする。
割合はパーセント表示にして、値の後に'%'を付加して表示すること。
カテゴリコード(CATEGORY_CODE)には、'10'(身長)、'20'(体重)がセットされており、
性別コード(GENDER_CODE)には、'20'(男)、'30'(女)がセットされている。
また、平均値、割合の計算結果は小数点第2位を四捨五入すること。
*/
SELECT
     H.AGE      AS AGE
   , CASE H.GENDER_CODE 
      WHEN '20' THEN 'MALE' 
      WHEN '30' THEN 'FEMALE' 
      END       AS GENDER
   , MAX(H_AVG) AS H_AVG
   , ROUND( 
      CAST( 
         COUNT( 
            H.CATEGORY_CODE = '10' 
            AND H.AVERAGE_VALUE >= WK1.H_AVG 
            OR NULL
         ) AS REAL
      ) / CAST(COUNT(H.CATEGORY_CODE = '10' OR NULL) AS REAL) * 100
      , 1
   ) || '%'     AS H_PER
   , MAX(W_AVG) AS W_AVG
   , ROUND( 
      CAST( 
         COUNT( 
            H.CATEGORY_CODE = '20' 
            AND H.AVERAGE_VALUE >= WK2.W_AVG 
            OR NULL
         ) AS REAL
      ) / CAST(COUNT(H.CATEGORY_CODE = '20' OR NULL) AS REAL) * 100
      , 1
   ) || '%'     AS W_PER
FROM
   SCHOOL_HEALTH H 
   INNER JOIN 
   /* 身長の平均値 */
   ( 
      SELECT
           AGE
         , GENDER_CODE
         , ROUND(AVG(AVERAGE_VALUE), 1) AS H_AVG 
      FROM
         SCHOOL_HEALTH 
      WHERE
         SURVEY_YEAR = 2019 
         AND CATEGORY_CODE = '10' 
      GROUP BY
         AGE
         , GENDER_CODE
   ) WK1 
      ON H.AGE = WK1.AGE 
      AND H.GENDER_CODE = WK1.GENDER_CODE 
   INNER JOIN 
   /* 体重の平均値 */
   ( 
      SELECT
           AGE
         , GENDER_CODE
         , ROUND(AVG(AVERAGE_VALUE), 1) AS W_AVG 
      FROM
         SCHOOL_HEALTH 
      WHERE
         SURVEY_YEAR = 2019 
         AND CATEGORY_CODE = '20' 
      GROUP BY
         AGE
         , GENDER_CODE
   ) WK2 
      ON WK1.AGE = WK2.AGE 
      AND WK1.GENDER_CODE = WK2.GENDER_CODE 
GROUP BY
   H.AGE
   , H.GENDER_CODE 
ORDER BY
   H.AGE DESC
   , H.GENDER_CODE DESC
提出情報
提出日時2023/08/21 11:25:40
コンテスト第8回 SQLコンテスト
問題身長と体重
受験者Geronimon
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量101 MB
メッセージ
テストケース(通過数/総数)
0/2
状態
メモリ使用量
データパターン1
WA
99 MB
データパターン2
WA
101 MB