体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【謎解きプログラム】データベースを扱ってみよう【SQLite】解答と解説

【謎解きプログラム】データベースを扱ってみよう【SQLite】

本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。

「24時間以内に謎が解けない場合は、このPCのデータは消失する。

 謎は、あなたが真のプログラマーなら解けるものだ」

これは挑戦状ではなく脅迫状だ!

そこには、見たことのない謎が掲載されていた。

あなたは歴戦のプログラマーとして、データを救うために、この謎に挑むことになった。

前提条件

問題は、タイトルの通り、SQLiteで実行するものとします。

CodeIQのCoding SandboxでSQLを選ぶと、sqlite3で実行されます。問題やサンプルは、このサンドボックスで実行するものとします。

問題1

以下のテーブルがあるとします。

— テーブルの作成と、データの追加
create table person(id integer primary key, name text, point integer, address text);
insert into person values(1, ‘Tanaka’, 90, ‘Tokyo’);
insert into person values(2, ‘Satou’,
80, ‘Tokyo’);
insert into person values(3, ‘Honda’,
77, ‘Chiba’);
insert into person values(4, ‘Goto’,
65, ‘Tokyo’);
insert into person values(5, ‘Suzuki’, 23, ‘Chiba’);
insert into person values(6, ‘O”hara’, 50, ‘Saitama’);

— 表示の設定
.mode column
.headers ON

このテーブルから、pointが60以上の人のデータを抽出して出力するSQL文を選んで下さい。

// 選択肢
select * from where point >= 60;
select * from person where point >= 60;
select * from where upper 60;
select * from person where upper 60;

まずは、どういったテーブルかを確認するために、問題のSQL文を実行したあとに、「select * from person;」でテーブルの中身を出力してみましょう。

select * from person;

id
name
point
address
———- ———- ———- ———-
1
Tanaka
90
Tokyo
2
Satou
80
Tokyo
3
Honda
77
Chiba
4
Goto
65
Tokyo
5
Suzuki
23
Chiba
6
O’hara
50
Saitama

このテーブルの中から、問題の条件に合致するデータを抽出します。それぞれの選択肢を実行してみましょう。

1 2 3 4次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。
GetNews girl / GetNews boy

オスカー2018年晴れ着撮影会