分析関数の結果で更新1
配点 : 20点難易度 : 2
制限実行時間 : 1000ms制限メモリ使用量 : 128 MB
SQLiteの注意点

TOPSIC SQLでは、SQLの実行環境にSQLiteを使用しています。SQLite以外のRDBMSの文法を使用することはできません。
問題を解く際に注意すべきSQLiteの制約について、以下に記載してありますのでご確認下さい。

  1. NUMERIC、INTEGER、REALは、自身のクラスへの変換が推奨されていますが、変換できなかった場合でも、そのまま格納されます。
  2. 新しくデータを追加した場合、既に格納されているデータの中で ROWID の値が最大のものを探し、それに1を加えた値が新しく追加されるデータの ROWID の値として保存されます。
  3. 外部結合は、左外部結合を行う LEFT OUTER JOIN 句のみ使用できます。
    ※2022年12月以降、LEFT / RIGHT / FULL OUTER JOIN が使用可能となりました。
  4. 指定した日付と時刻のタイムゾーンはUTCとして扱われます。
  5. 日付関数や文字列関数については、SQLiteで固有の関数があります。
  6. テーブル項目の論理名が「◯◯日」となっている場合は、日付項目の時分秒は設定されていません。論理名が「◯◯日時」となっている場合は、日付項目の時分秒まで設定されています。
    • 「受注日」の場合は「2021-01-01」
    • 「受注日時」の場合は「2021-01-01 15:15:15」

その他のSQLiteの制約については、SQLiteの公式ドキュメントをご確認ください。
また、ER図の読み方やSQLiteの関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

学生を対象としたとある試験(試験コード: 'T00001')を実施しました。
合計得点テーブルには各学生の合計得点や順位などのデータを保存する構成になっています。
現在、合計得点の集計が完了しましたが、順位の値がNULLのままになっています。
合計得点を元に各学生の順位を判定しましょう。

※本試験は今回が初開催であり、試験コードが'T00001'のデータのみとなっています。


※左が物理名、右が論理名です。

合計得点をもとに順位を算出し、合計得点テーブルの順位の値を更新してください。
順位の算出にはRANK関数を使用してみましょう。

ヒント RANK関数を使って順位を集計することができます。

SELECT RANK() OVER(ORDER BY カラム名 DESC)
FROM テーブル名

上記のように特定のカラムの順序で順位を算出することができます。
値が同じ場合は同率順位とされ、続く順位は欠番になります。

テーブル定義

テーブル名: total_scores(合計得点)

主キー 列名 データ型 必須 デフォルト値
✔︎ test_code VARCHAR ✔︎ NULL
✔︎ student_code VARCHAR ✔︎ NULL
total_score INTEGER NULL
ranking INTEGER NULL
passed BOOLEAN NULL

サンプルデータ

テーブル名: total_scores(合計得点)

test_code student_code total_score ranking passed
T00001 A00001 84 NULL NULL
T00001 A00002 110 NULL NULL
T00001 A00003 205 NULL NULL
T00001 A00004 206 NULL NULL
T00001 A00005 184 NULL NULL
T00001 A00006 189 NULL NULL
T00001 A00007 125 NULL NULL
T00001 A00008 97 NULL NULL
T00001 A00009 237 NULL NULL
T00001 A00010 145 NULL NULL
T00001 A00011 132 NULL NULL
T00001 A00012 197 NULL NULL
T00001 A00013 111 NULL NULL
T00001 A00014 233 NULL NULL
T00001 A00015 221 NULL NULL
T00001 A00016 187 NULL NULL
T00001 A00017 154 NULL NULL
T00001 A00018 229 NULL NULL
T00001 A00019 108 NULL NULL
T00001 A00020 184 NULL NULL
T00001 A00021 172 NULL NULL
T00001 A00022 202 NULL NULL
T00001 A00023 168 NULL NULL
T00001 A00024 89 NULL NULL
T00001 A00025 196 NULL NULL
T00001 A00026 85 NULL NULL
T00001 A00027 82 NULL NULL
T00001 A00028 187 NULL NULL
T00001 A00029 144 NULL NULL
T00001 A00030 99 NULL NULL
T00001 A00031 170 NULL NULL
T00001 A00032 191 NULL NULL
T00001 A00033 263 NULL NULL
T00001 A00034 171 NULL NULL
T00001 A00035 103 NULL NULL
T00001 A00036 159 NULL NULL
T00001 A00037 182 NULL NULL
T00001 A00038 198 NULL NULL
T00001 A00039 187 NULL NULL
T00001 A00040 166 NULL NULL
T00001 A00041 217 NULL NULL
T00001 A00042 181 NULL NULL
T00001 A00043 137 NULL NULL
T00001 A00044 134 NULL NULL
T00001 A00045 181 NULL NULL
T00001 A00046 210 NULL NULL
T00001 A00047 150 NULL NULL
T00001 A00048 96 NULL NULL
T00001 A00049 81 NULL NULL
T00001 A00050 149 NULL NULL
T00001 A00051 138 NULL NULL
T00001 A00052 197 NULL NULL
T00001 A00053 186 NULL NULL
T00001 A00054 127 NULL NULL
T00001 A00055 122 NULL NULL
T00001 A00056 95 NULL NULL
T00001 A00057 208 NULL NULL
T00001 A00058 206 NULL NULL
T00001 A00059 145 NULL NULL
T00001 A00060 224 NULL NULL
T00001 A00061 101 NULL NULL
T00001 A00062 150 NULL NULL
T00001 A00063 159 NULL NULL
T00001 A00064 102 NULL NULL
T00001 A00065 140 NULL NULL
T00001 A00066 72 NULL NULL
T00001 A00067 100 NULL NULL
T00001 A00068 106 NULL NULL
T00001 A00069 107 NULL NULL
T00001 A00070 101 NULL NULL
T00001 A00071 123 NULL NULL
T00001 A00072 254 NULL NULL
T00001 A00073 77 NULL NULL
T00001 A00074 96 NULL NULL
T00001 A00075 171 NULL NULL
T00001 A00076 102 NULL NULL
T00001 A00077 140 NULL NULL
T00001 A00078 62 NULL NULL
T00001 A00079 122 NULL NULL
T00001 A00080 29 NULL NULL
T00001 A00081 131 NULL NULL
T00001 A00082 167 NULL NULL
T00001 A00083 144 NULL NULL
T00001 A00084 61 NULL NULL
T00001 A00085 91 NULL NULL
T00001 A00086 132 NULL NULL
T00001 A00087 86 NULL NULL
T00001 A00088 155 NULL NULL
T00001 A00089 165 NULL NULL
T00001 A00090 104 NULL NULL
T00001 A00091 65 NULL NULL
T00001 A00092 158 NULL NULL
T00001 A00093 216 NULL NULL
T00001 A00094 136 NULL NULL
T00001 A00095 157 NULL NULL
T00001 A00096 71 NULL NULL
T00001 A00097 113 NULL NULL
T00001 A00098 160 NULL NULL
T00001 A00099 136 NULL NULL
T00001 A00100 122 NULL NULL
T00001 A00101 97 NULL NULL
T00001 A00102 92 NULL NULL
T00001 A00103 68 NULL NULL
T00001 A00104 161 NULL NULL
T00001 A00105 154 NULL NULL
T00001 A00106 236 NULL NULL
T00001 A00107 273 NULL NULL
T00001 A00108 117 NULL NULL
T00001 A00109 99 NULL NULL
T00001 A00110 252 NULL NULL
T00001 A00111 243 NULL NULL
T00001 A00112 134 NULL NULL
T00001 A00113 123 NULL NULL
T00001 A00114 88 NULL NULL
T00001 A00115 60 NULL NULL
T00001 A00116 87 NULL NULL
T00001 A00117 155 NULL NULL
T00001 A00118 128 NULL NULL
T00001 A00119 206 NULL NULL
T00001 A00120 144 NULL NULL
T00001 A00121 81 NULL NULL
T00001 A00122 219 NULL NULL
T00001 A00123 204 NULL NULL
T00001 A00124 140 NULL NULL
T00001 A00125 109 NULL NULL
T00001 A00126 134 NULL NULL
T00001 A00127 104 NULL NULL
T00001 A00128 93 NULL NULL
T00001 A00129 132 NULL NULL
T00001 A00130 123 NULL NULL
T00001 A00131 133 NULL NULL
T00001 A00132 92 NULL NULL
T00001 A00133 103 NULL NULL
T00001 A00134 147 NULL NULL
T00001 A00135 109 NULL NULL
T00001 A00136 138 NULL NULL
T00001 A00137 186 NULL NULL
T00001 A00138 148 NULL NULL
T00001 A00139 185 NULL NULL
T00001 A00140 146 NULL NULL
T00001 A00141 194 NULL NULL
T00001 A00142 140 NULL NULL
T00001 A00143 207 NULL NULL
T00001 A00144 103 NULL NULL
T00001 A00145 153 NULL NULL
T00001 A00146 120 NULL NULL
T00001 A00147 79 NULL NULL
T00001 A00148 88 NULL NULL
T00001 A00149 138 NULL NULL
T00001 A00150 147 NULL NULL
T00001 A00151 225 NULL NULL
T00001 A00152 199 NULL NULL
T00001 A00153 134 NULL NULL
T00001 A00154 155 NULL NULL
T00001 A00155 122 NULL NULL
T00001 A00156 99 NULL NULL
T00001 A00157 125 NULL NULL
T00001 A00158 163 NULL NULL
T00001 A00159 101 NULL NULL
T00001 A00160 207 NULL NULL
T00001 A00161 115 NULL NULL
T00001 A00162 169 NULL NULL
T00001 A00163 74 NULL NULL
T00001 A00164 163 NULL NULL
T00001 A00165 164 NULL NULL
T00001 A00166 113 NULL NULL
T00001 A00167 171 NULL NULL
T00001 A00168 168 NULL NULL
T00001 A00169 144 NULL NULL