理系学生日記

おまえはいつまで学生気分なのか

問題 4-1 (Filtering)

Section 4 の Filtering に突入した.WHERE 句をどうやって使うかが説明された,まだ初歩的な章です. この章の練習問題を解くために,まずは Scheme を作成しよう!

|mysql| mysql> CREATE TABLE tb_section4 ( -> Txn_id TINYINT UNSIGNED, -> Txn_date DATE, -> Account_id TINYINT UNSIGNED, -> Txn_type_cd ENUM('CDT', 'DBT'), -> Amount FLOAT(7,2), -> CONSTRAINT pk_tb_section4 PRIMARY KEY (Txn_id) -> ); Query OK, 0 rows affected (0.00 sec) ||< これに実際のレコードを入れて,今のテーブルはこういう状態. |scheme| mysql> SELECT * FROM tb_section4; +--------+------------+------------+-------------+---------+ | Txn_id | Txn_date | Account_id | Txn_type_cd | Amount | +--------+------------+------------+-------------+---------+ | 1 | 2005-02-22 | 101 | CDT | 1000.00 | | 2 | 2005-02-23 | 102 | CDT | 525.75 | | 3 | 2005-02-24 | 101 | DBT | 100.00 | | 4 | 2005-02-24 | 103 | CDT | 55.00 | | 5 | 2005-02-25 | 101 | DBT | 50.00 | | 6 | 2005-02-25 | 103 | DBT | 25.00 | | 7 | 2005-02-25 | 102 | CDT | 125.37 | | 8 | 2005-02-26 | 103 | DBT | 10.00 | | 9 | 2005-02-27 | 101 | CDT | 75.00 | +--------+------------+------------+-------------+---------+ 9 rows in set (0.00 sec) ||< さて,このテーブルに以下のクエリを投げます.その結果,何が出力されるかな?って問題. |mysql| mysql> SELECT txn_id -> FROM tb_section4 -> WHERE Txn_date < '2005-02-26' -> AND (txn_type_cd = 'DBT' OR amount > 100); ||< トランザクションが 2005-02-26 以前に記録されていて,かつ,トランザクションのタイプが DBT か amount が 100 以上の トランザクション ID が出力されるので,1, 2, 3, 5, 6, 7 ってなるな.