13章−1

(1) 実行結果を参考に次のようなSQLを作成しなさい。制約などは適切に付加すること。
・店舗を管理するテーブルstoreを作成し、行を追加する。
	(price列は単価を意味する)
・商品を管理するテーブルitemを作成し、行を追加する。
・売上を管理するテーブルsalesを作成し、行を追加する。ただし次の条件を満たすこと。
	1. s_code列はstoreテーブルのcode列と同じデータを意味し、そこに存在する値以外は拒否する。
	2. i_code列はitemテーブルのcode列と同じデータを意味し、そこに存在する値以外は拒否する。
	3. num列は販売数を意味する。


odexer=> \i 13_1_1.sql
psql:13_1_1.sql:8: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "store_pkey" for table "store"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:13_1_1.sql:17: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "item_pkey" for table "item"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1

odexer=> select * from store;
 code |  name
------+--------
    1 | 新宿店
    2 | 渋谷店
    3 | 池袋店
(3 rows)

odexer=> select * from item;
 code |    name    | price
------+------------+-------
    1 | コカコーラ |    95
    2 | Mサイダー |    88
    3 | CCレモン |    90
(3 rows)

odexer=> select * from sales;
 s_code | i_code | num
--------+--------+-----
      1 |      1 |  15
      1 |      2 |   8
      2 |      2 |  11
      2 |      3 |   7
      3 |      1 |  10
      3 |      3 |   9
(6 rows)


(2) 実行結果を参考に次のようなSQLを作成しなさい。
・店舗毎に商品の販売数と売上金額を表示するビューsales_vを作成する。ただし次の条件を満たすこと。
	1. 売上金額 = 単価×販売数とする。
	2. 店舗と商品は全ての組み合わせを表示する。
	3. store, itemテーブルのcode列の昇順で表示する。

odexer=> \i 13_1_2.sql
CREATE VIEW

odexer=> select * from sales_v;
  店舗  |    商品    | 販売数 | 売上金額
--------+------------+--------+----------
 新宿店 | コカコーラ |     15 |     1425
 新宿店 | Mサイダー |      8 |      704
 新宿店 | CCレモン |        |
 渋谷店 | コカコーラ |        |
 渋谷店 | Mサイダー |     11 |      968
 渋谷店 | CCレモン |      7 |      630
 池袋店 | コカコーラ |     10 |      950
 池袋店 | Mサイダー |        |
 池袋店 | CCレモン |      9 |      810
(9 rows)


(3) 実行結果を参考に次のようなSQLを作成しなさい。
・売上金額の合計を表示するビューsales_t_vを作成しなさい。

odexer=> \i 13_1_3.sql
CREATE VIEW

odexer=> select * from sales_t_v;
 合計売上金額
--------------
         5487
(1 row)