理系学生日記

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

忍者TOOLS

問題 4-1 (Filtering)

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

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)

これに実際のレコードを入れて,今のテーブルはこういう状態.

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> 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 ってなるな.