POSSEPH2

PH2 トップ / W1 / SQL事件簿

SQL事件簿 第1章|事件の夜、J棟にいたのは誰か

7月28日(火)の朝、POSSE大学の学生たちのあいだに、ある画像が出回りました。その日の2限にある「統計学」の期末試験、その問題用紙を撮った写真です。

大学が調べたところ、前の晩にJ棟の教員室(J301)の複合機で、「統計学_期末試験.pdf」が4枚印刷されていました。記録に残っていた時刻は 7月27日(月)22時14分 です。

教員室に入るには、学生証か職員証をドアのカードリーダーにかざす必要があります。かざした記録は、すべてデータベースに残っています。あなたは学生自治会の調査係として、この記録を調べることになりました。

まずは、その夜J棟にいた人を洗い出しましょう。

証拠:入退室の記録(access_logs)

今回使うのは access_logs テーブルだけです。エディタで SELECT * FROM access_logs; を実行して、中身を眺めるところから始めてください。

カラム 中身
card_number かざしたカードの番号。S で始まるのは学生、T で始まるのは教職員
building 建物(J棟、図書館 など)
room 部屋(J301 など)
entered_at 入った日時
exited_at 出た日時。出るときにカードをかざさなかった人は空っぽ(NULL)になる
source 記録がどう入ったか(今は気にしなくて大丈夫です)

日時は '2026-07-27 21:00' のように、文字列と同じシングルクォートで書いて比べられます。

SELECT * FROM access_logs WHERE entered_at >= '2026-07-27 21:00';

解き方

このページの下に、問題を解く場所があります。問は3つで、上のタブで切り替えられます。どの問から解いてもかまいません。

  1. 問題文を読み、エディタに SQL を書く
  2. 「実行」を押して、結果の表を確かめる(何度でも実行できます)
  3. よければ「提出」を押す。書いた SQL を実行した結果で、正解かどうかを判定します

目で数えた答えではなく、書いた SQL そのものが判定の対象です。判定には、画面で見えている証拠データのほかに、別の日の証拠データも使います。WHERE id IN (3, 7, 12) のように見えている行を直接指定した SQL は、別の日のデータで結果が食い違うので正解になりません。問題文の条件どおりに絞り込んでください。

同じ問を2回まちがえると、ヒントが出ます。

このあと

第1章で見つけた人たちが、そのまま犯人とは限りません。教員室に先生がいるのは自然なことです。第2章(W2)では、この人たちが 統計学を履修しているかどうか を、別のテーブルとつないで調べます。

問題を解く(3問)

「実行」で結果を確かめ、よければ「提出」してください

テーブルの一覧を見る
  • 読み込み中…