## 大魯閣常用SQL指令
1.大魯閣棒保會員共用,持有大魯閣應援/學生卡在保齡和棒壘都可以享有會員優惠。
2.持有多張卡別的顯示順序:Homereun > 應援(可能有多張,依卡號顯示) > 學生
資料庫:密碼taroko
localhost (主機,自用)
10.1.1.19 citrus會員(非即時,隔日早上6點前匯入)、taroko(POS即時消費資料)
10.1.1.17 CHEIFPOS-TRK致富寶會員
* 致富寶POS使用期間:2020.07.01~2023.04.30
* Cirtus POS使用期間:2023.05.01~
注意事項:
1. 要測試資料欄位是否是你所需,可使用以下指令,避免資料跑太久。
```
select top 1000*
```
2. ==嚴禁在localhost以外的資料庫、用select以外的語法==,避免動到資料庫資料。
3. 查詢結果可以直接全選複製到excel,並把格式調整成字串,手機號碼格式就不會跑掉了。
---
### Cirtus 資料 10.1.1.19
#### citrus.dbo.cardTbl 會員基本資料(2024/04/01後未更新)
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| --------- | ---------- | -------------------------- | ------------------------------------------------ |
| memid | 思圖會員id | "memid":"ST14491223" | |
| memberid | 思圖會員id | "memberid":"ST14491223" | |
| cardNo |會員卡號|"cardNo":"J190396057"|APP會員無卡號,以思圖id為主。J19開頭學生卡;A19開頭應援卡;A01開頭HOMERUN卡|
| ctype | 卡別 | "ctype":"APP" | APP、大魯閣應援卡、大魯閣學生卡、大魯閣HOMERUN卡 |
| activeYmd | 卡片啟用日 | "activeYmd":"20230709" | |
| checkYmd | 卡片到期日 | "checkYmd":"20991231" | |
| uName | 姓名 | "uName":"林琮凱" | |
| uSex | 性別 | "uSex":"X" | X:無法確認;F:女性;M:男性 |
| birthday | 生日 | "birthday":"20000101" | |
| mobile | 手機 | "mobile":"0981803774" | 唯一值,經過雙重驗證 |
| email | Email | "email":"123@yahoo.com.tw" | 未經過雙重驗證 |
| lastYmd | 最後消費日 | "lastYmd":"20240101" | |
| addr | 居住地 | "addr":"高雄市" | 城市名稱 |
| createYmd | 資料創建日 | "creatYmd":"20230905" | |
#### taroko.dbo.customer (即時會員資料)
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| -------- | -------- | --- | --------------------------------------------------------------- |
| CustNo | 卡號 |"CustNo":"ST00021723" |思圖卡號,只要有APP即會賦予|
| Name | 姓名 |"Name":"王大明" ||
| Birth | 生日 |"Birthday":"1984-11-09 00:00:00.000" |非必填|
| Gender | 性別 |"Gender":"M" |非必填。M男生;F女生;X未填|
| Mobile | 手機 |"Mobile":"0900000000" |唯一值|
| Email | 信箱 |"Email":"taroko.sports@gmail.com" |非必填|
#### citrus.dbo.cardCat 卡別名稱
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| -------- | -------- | --- | --------------------------------------------------------------- |
| cardCat | 卡別編號 |"cardCat":"A00302" | |
| cardName | 卡別名稱 |"cardName":"大魯閣應援卡" | A0301:大魯閣HOMERUN卡;A00302:大魯閣應援卡;A0303:大魯閣學生卡 |
#### taroko.dbo.Orders 交易訂單
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| --------- | ------------ | ------------------------------------- | ----------------- |
| StoreID | 店鋪編號 | "StoreID":"12103" | |
| OrderNO | 交易訂單編號 | "OrderNO":"P012023010100001" | 因為是流水號,訂單編號非唯一值,不同館會有同樣的編號 |
| OrderTime | 交易時間 | "OrderTime":"2023-01-01 10:54:29.000" | |
| SPrice | 交易金額 | "SPrice":"250" | 含稅金額 |
| IsDel | 交易是否取消 | "IsDel":"Y" | Y:取消;N:未取消 |
| PayType | 付款方式 | "PayType":"現金" | |
| CustNo|APP會員編號|"CustNo":"ST43353023"|思圖會員編號,只要有下載APP即會賦予一個|
| CardType| 會員卡別 | "CardType":"A0301" | A0301:大魯閣HOMERUN卡;A00302:大魯閣應援卡;A0303:大魯閣學生卡 |
| CardNo|會員編號| "CardNo":"ST03634424A0302" |ST卡號+A0302=有綁定數位付費會員卡;若只有A01、A19、J19開頭,代表尚未綁定|
| Qty | 交易數量 | "Qty":"6" | 明細項目數量 |
| CName | 姓名 | "CName":"王大明" | |
| Tel | 電話 | "Tel":"0900000000" | 唯一值 |
#### taroko.dbo.OrdersItem 交易明細
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| --------- | ------------ | ------------------------------------- | ---- |
| StoreID | 店鋪編號 | "StoreID":"12103" | |
| OrderNO | 交易訂單編號 | "OrderNO":"P012023010100001" | |
| Oty | 項目數量 |"Oty":"1"| |
| SPrice | 交易金額 | "SPrice":"250"|含稅金額|
| Gname|商品名稱|"Gname":"平日2H門票"| |
#### taroko.dbo.Store 店鋪資料
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| --------- | ------------ | ------------------------------------- | ---- |
| StoreID |店鋪編號| "StoreID":"12103"| |
| StoreName |店鋪名稱 | "StoreName":"新時代館" | 基創為12500~12599之間|
#### taroko.dbo.Goods 商品資料
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| ---------- | ------------ | -------------------------------------- | -------------------- |
| GKID | | | |
| GID | 商品代號 | "GID":"010501000372" | |
| GName | 商品名稱 | "GName":"學生代幣15枚" | |
| Price | ? | | *看起來不是商品價錢* |
| IsVaild | 商品是否有效 | "IsVaild":"Y" | |
| GType | 商品類別?| |*不知道意義*|
| UpdateDate | 更新日期 | "UpdateDate":"2023-04-06 14:16:44.630" ||
#### taroko.dbo.OrderPayway 訂單支付方式
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| -------- | ------------ | ---------------------------- | ---- |
| StoreID | 店鋪編號 | "StoreID":"12103" | |
|OrderNO |交易訂單編號 |"OrderNO":"P012023010100001" | |
| Paydesc | 支付方式 | "Paydesc":"台新刷卡離線" |常用:現金、信用卡、電子支付、動滋券 |
#### taroko.dbo.InvoiceOrders 訂單發票
| 欄位名稱 | 欄位意義 | 說明 | 備註 |
| --------- | ------------ | ------------------------------------- | ------------------------------------ |
| StoreID | 店鋪編號 | "StoreID":"12103" | |
| INVWord | 發票開頭 | "INVWord":"AK" | |
| INVNo | 發票號碼 | "INVNo":"28704041" | |
| OrderNO | 交易訂單編號 | "OrderNO":"P012023010100001" | |
| OrderTime | 交易時間 | "OrderTime":"2023-01-01 10:54:29.000" | |
| Status | 交易狀態 | "Status":"Y" | Y為正常交易,N為取消或換貨 |
| Payamt | 交易金額 | "Payamt":"500" | |
| DelReason | 取消原因 | "DelReason":"客戶換貨" |客戶取消、客戶抱怨、客戶換貨、退貨 |
| Paydesc | 支付方式 | "Paydesc":"台新刷卡離線" | 常用:現金、信用卡、電子支付、動滋券 |
---
### 撈取目前有效會員資料
目的:可針對未過期會員投遞簡訊。
```
SELECT c.mobile, s.StoreName, o.StoreID, o.OrderTime, o.CustNo, o.SPrice, o.IsDel, c.cardNo,c.uSex, c.ctype, c.uName,c.birthday,DATEDIFF(year,TRY_CAST(c.birthday AS DATE),GETDATE())AS agediff,c.activeYmd,c.checkYmd,c.lastYmd
FROM taroko.dbo.Orders o
JOIN taroko.dbo.Store s ON o.StoreID=s.StoreID
JOIN citrus.dbo.cardTbl c ON o.CustNo=c.memberid
WHERE convert(varchar(10), o.OrderTime, 112 ) between '20230501' and '20240409' ###選取期間
AND len(o.CustNo) !=0 and o.IsDel='N'
AND o.StoreID between 12500 and 12599
AND DATEDIFF(day,GETDATE(),TRY_CAST(c.checkYmd AS DATE)) >=0 ###篩選未過期會員
AND s.StoreName = '中華館' ###篩館別
```
### 撈取訂單資料
目的:撈取會員消費紀錄
```
SELECT DISTINCT c.mobile,o.OrderNO,o.OrderTime,o.SPrice,o.CardType,o.StoreID,s.StoreName,CC.cardName
FROM taroko.dbo.Orders o
JOIN citrus.dbo.cardTbl c on o.CustNo = c.memberid
JOIN taroko.dbo.Store s on o.StoreID = s.StoreID
JOIN citrus.dbo.cardCat CC on o.CardType = CC.cardCat
WHERE convert(varchar(10), o.OrderTime, 112 ) between '20230601' and '20230630'
AND len(o.CustNo) !=0 and o.IsDel='N'
AND o.StoreID between 12500 and 12599
```
### 計算購買品項
目的:計算特定時段內,消費者購買某品項的總數量
```
SELECT Gname, SPrice, COUNT(Gname) AS TotalCount, SUM(SPrice) AS TotalSum
FROM taroko.dbo.OrdersItem
WHERE CONVERT(varchar(10), CreateDate, 112) BETWEEN '20230801' AND '20230831'
AND IsDel = 'N'
AND StoreID BETWEEN 12500 AND 12599
GROUP BY Gname, SPrice;
```
```
SELECT
oi.Gname,
COUNT(*) AS SaleCount
FROM
taroko.dbo.Orders o
JOIN
taroko.dbo.OrdersItem oi ON o.StoreID = oi.StoreID AND o.OrderNO = oi.OrderNO
WHERE
oi.Gname IN ('113年年中慶套票3組', '113年年中慶套票2組', '巨城-113年年中慶套票3組', '113年年中慶電子套票3組', '113年年中慶電子套票2組', '會員30枚', '會員80枚', '學生代幣15枚','學生代幣15枚(虛擬代幣)','會員30枚(虛擬代幣)')
AND o.CardType = 'A0303'
AND CONVERT(varchar(10),OrderTime,112) between '20240701' AND '20240722'
AND o.IsDel = 'N'
GROUP BY
oi.Gname;
```
### 計算平均客單價
```
SELECT
AVG(SPrice) AS avgprice
FROM
taroko.dbo.Orders o
WHERE
o.CardType = 'A0303'
AND CONVERT(varchar(10),OrderTime,112) between '20240701' AND '20240722'
AND o.IsDel = 'N'
AND SPrice != 0
```
### 青春動滋券使用會員
目的:撈取使用會員名單、卡別、金額
```
SELECT StoreName,OrderTime,SPrice,CardType,c.Name,c.Mobile
FROM taroko.dbo.Orders o
JOIN taroko.dbo.Store s ON s.StoreID=o.StoreID
JOIN taroko.dbo.Customer c ON c.Mobile=o.Tel
JOIN taroko.dbo.OrdersPayway op ON op.StoreID=o.StoreID AND op.OrderNO = o.OrderNO
WHERE o.StoreID between 12500 and 12599
AND CONVERT(varchar(10),OrderTime,112) between '20240101' and '20240714'
AND o.IsDel = 'N'
AND op.Paydesc = '動滋券'
AND CardType IN ('A0301','A0302','A0303')
```
### 滿額發票數量
目的:mapping消費滿額會員名單,做簡訊提醒用
```
SELECT *
FROM taroko.dbo.InvoiceOrders io
JOIN taroko.dbo.Orders o ON o.OrderNO = io.OrderNO AND o.StoreID = io.StoreID
WHERE io.StoreID between 12500 and 12599
AND io.Status ='Y'
AND Payamt >= 500 #輸發票金額
AND CONVERT(varchar(10),io.OrderTime,112) between '20240701' and '20240820' #發票日期區間
AND o.CardType in ('A0301','A0302','A0303'); #卡別
```