2章−1

(1) 次のファイルを02_1.datという名前で作成しなさい。(項目の区切りはタブ)

1001	山田	32	43	20	15
1002	吉田	29	35	41	37
1003	田中	19	22	28	36
1004	鈴木	42	33	45	27
1005	佐藤	25	20	28	30
1006	斎藤	40	22	32	16
1007	村山	19	24	22	25
1008	中村	27	32	24	31
1009	前田	32	35	33	29
1010	高木	18	23	34	25
1011	坂本	32	35	33	39
1012	松井	38	43	35	36


(2) 実行結果を参考に次のようなSQLを作成しなさい。
・テーブルt02_1を作成する。
・\copyでt02_1テーブルに02_1.datを取り込む。

odexer=> \i 02_1_2.sql
CREATE TABLE
odexer=> select * from t02_1;
 code | name | q1 | q2 | q3 | q4
------+------+----+----+----+----
 1001 | 山田 | 32 | 43 | 20 | 15
 1002 | 吉田 | 29 | 35 | 41 | 37
 1003 | 田中 | 19 | 22 | 28 | 36
 1004 | 鈴木 | 42 | 33 | 45 | 27
 1005 | 佐藤 | 25 | 20 | 28 | 30
 1006 | 斎藤 | 40 | 22 | 32 | 16
 1007 | 村山 | 19 | 24 | 22 | 25
 1008 | 中村 | 27 | 32 | 24 | 31
 1009 | 前田 | 32 | 35 | 33 | 29
 1010 | 高木 | 18 | 23 | 34 | 25
 1011 | 坂本 | 32 | 35 | 33 | 39
 1012 | 松井 | 38 | 43 | 35 | 36
(12 rows)


(3) 実行結果を参考に次のようなSQLを作成しなさい。
・t02_1テーブルに、q1,q2,q3,q4の合計も追加して出力する。

odexer=> \i 02_1_3.sql
 code | name | q1 | q2 | q3 | q4 | total
------+------+----+----+----+----+-------
 1001 | 山田 | 32 | 43 | 20 | 15 |   110
 1002 | 吉田 | 29 | 35 | 41 | 37 |   142
 1003 | 田中 | 19 | 22 | 28 | 36 |   105
 1004 | 鈴木 | 42 | 33 | 45 | 27 |   147
 1005 | 佐藤 | 25 | 20 | 28 | 30 |   103
 1006 | 斎藤 | 40 | 22 | 32 | 16 |   110
 1007 | 村山 | 19 | 24 | 22 | 25 |    90
 1008 | 中村 | 27 | 32 | 24 | 31 |   114
 1009 | 前田 | 32 | 35 | 33 | 29 |   129
 1010 | 高木 | 18 | 23 | 34 | 25 |   100
 1011 | 坂本 | 32 | 35 | 33 | 39 |   139
 1012 | 松井 | 38 | 43 | 35 | 36 |   152
(12 rows)


(4) 実行結果を参考に次のようなSQLを作成しなさい。
・t02_1テーブルのq1,q2,q3,q4の合計が90か100か110である行のcodeとnameを出力する。
・IN演算子を使用する。

odexer=> \i 02_1_4.sql
 code | name | total
------+------+-------
 1001 | 山田 |   110
 1006 | 斎藤 |   110
 1007 | 村山 |    90
 1010 | 高木 |   100
(4 rows)


(5) 実行結果を参考に次のようなSQLを作成しなさい。
・t02_1テーブルのq1が32、q2が35、q3が33である行を出力する。
・行コンストラクタを使用する。

odexer=> \i 02_1_5.sql
 code | name | q1 | q2 | q3 | q4
------+------+----+----+----+----
 1009 | 前田 | 32 | 35 | 33 | 29
 1011 | 坂本 | 32 | 35 | 33 | 39
(2 rows)


(6) 実行結果を参考に次のようなSQLを作成しなさい。
・t02_1テーブルのq1,q2,q3,q4の合計が110から140までである行を出力する。
・BETWEEN演算子を使用する。

odexer=> \i 02_1_6.sql
 code | name | total
------+------+-------
 1001 | 山田 |   110
 1006 | 斎藤 |   110
 1008 | 中村 |   114
 1009 | 前田 |   129
 1011 | 坂本 |   139
(5 rows)