owned this note
owned this note
Published
Linked with GitHub
# 11/26 每日任務
有一間廠商即將建置「**健身教練線上直播課平台**」
**其優點是:**
- **小班制健身直播課制**:教練會在平台開課,學生前往教練開設的課程頁面報名,課程時間到了後,就可點擊課程直播室進行上課
- 堂數售價:每位健身教練的收費都一致,一堂 50 分鐘**小班制健身直播課**都是 200 元
#### 堂數組合包方案
- 7 堂組合包方案:
- 價格:1,400 元
- 14 堂方案:
- 價格:2,520 元
- 21 堂方案:
- 價格:4,800 元
## 需要必備的知識點
1. [子查詢(子查詢 (Subquery))章節 - 三部影片請都檢視完再作答](https://courses.hexschool.com/courses/20242/lectures/58295022)
## 情境講解
1. 為滿足商業需求的組合包方案,於是建立了 `CREDIT_PACKAGE` 資料表,來記錄各組合包資訊
2. 客戶在買的訂單記錄,都會記錄在 `CREDIT_PURCHASE` 資料表中
## 資料庫預設資訊與欄位介紹
1. **USER**:使用者資料
2. **CREDIT_PACKAGE**:組合包方案
* credit_amount:堂數
* price:金額
4. **CREDIT_PURCHASE**:客戶購買課程堂數
* user_id:使用者(USER) 的 id 資訊
* purchased_credits:購買堂數
* price_paid:購買金額
```sql
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE "USER" (
"id" uuid PRIMARY KEY NOT NULL DEFAULT (gen_random_uuid()),
"name" varchar(50) NOT NULL,
"email" varchar(320) UNIQUE NOT NULL,
"role" varchar(20) NOT NULL,
"created_at" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"updated_at" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
CREATE TABLE "CREDIT_PACKAGE" (
"id" serial PRIMARY KEY,
"name" varchar(50) NOT NULL,
"credit_amount" integer NOT NULL,
"price" numeric(10,2) NOT NULL,
"created_at" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
CREATE TABLE "CREDIT_PURCHASE" (
"id" uuid PRIMARY KEY NOT NULL DEFAULT (gen_random_uuid()),
"user_id" uuid NOT NULL REFERENCES "USER"(id),
"credit_package_id" integer NOT NULL REFERENCES "CREDIT_PACKAGE"(id),
"purchased_credits" integer NOT NULL,
"price_paid" numeric(10,2) NOT NULL,
"created_at" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"purchase_at" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
```
## 題目
**請將先 [11/25 每日任務的使用者題目](https://hackmd.io/XKkdxcKqSyapPEmhP88qgQ?both)加入到資料庫指令後,再行答題**
## 第二大題:組合包方案 `CREDIT_PACKAGE`、客戶購買課程堂數 `CREDIT_PURCHASE`
**1\. 新增**:在`CREDIT_PACKAGE` 資料表新增三筆資料,資料需求如下:
- 名稱為 `7 堂組合包方案`,價格為`1,400` 元,堂數為`7`
- 名稱為`14 堂組合包方案`,價格為`2,520` 元,堂數為`14`
- 名稱為 `21 堂組合包方案`,價格為`4,800` 元,堂數為`21`
**2\. 新增**:在 `CREDIT_PURCHASE` 資料表,新增三筆資料:(請使用 name 欄位做子查詢)
- `王小明` 購買 `14 堂組合包方案`
- `王小明` 購買 `21 堂組合包方案`
- `好野人` 購買 `14 堂組合包方案`
```sql
-- 王小明提示範例
insert into "CREDIT_PURCHASE" (user_id, credit_package_id, purchased_credits, price_paid) values
((select id from "USER" where email = 'wXlTq@hexschooltest.io'),
(select id from "CREDIT_PACKAGE" where name = '14 堂組合包方案'),
(select credit_amount from "CREDIT_PACKAGE" where name = '14 堂組合包方案'),
(select price from "CREDIT_PACKAGE" where name = '14 堂組合包方案'))
```